asp.Netdatalistの使い方

3131 ワード

デザインテンプレート:
ヘッダー
フッター
データレコード
アイテムを交互に表示
選択時の表示方法
編集時の表示方法
データレコードセパレータ
テンプレートを編集し、コントロールを埋め込み、データをバインドできます.
外観の設定
RepeatLayoutプロパティ設定表示方法
RepeatDirection表示方向
RepeatColumns列数
≪イベント|Events|ldap≫
テンプレート列に追加するボタンは、そのclickイベントをItemCommandイベントに反転させます.また、CommandNameを設定することもできます.
例えば、edit、すなわちEditCommand()を開始するなど、異なるイベントに応答します.
注意:selectに設定すると、SelectedIndexChangedおよびItemCommandイベントが発生します.
SelectedItemTemplateテンプレート;詳細なコントロールを追加し、ユーザーが選択した場合、テンプレートを選択すると表示されます.
private void DataList1_ItemCommand(……)
{ switch(e.CommandName)
{
case "select":
this.DataList1.SelectedIndex=e.Item.ItemIndex;
string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];
//このレコードの詳細データは、SelectedItemTemplateテンプレートに表示されます.
break;
case "unselect":
this.DataList1.SelectedIndex=-1;
break;
}
this.DataList1.DataBind();//ぜひ
}
EditItemTemplateテンプレート
編集:
this.DataList1.EditItemIndex=e.Item.ItemIndex;
this.DataList1.DataBind();
更新:
プライマリ・キーを取得
string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];
テンプレートのコントロールを得る
TextBox box=(TextBox)e.Item.FindControl("TextBox1");
レコードの更新
this.DataList1.DataBind();
キャンセル:
this.DataList1.EditItemIndex=-1;
this.DataList1.DataBind();
アイテムの削除
1回に複数のレコードをチェックし、1回に削除
 
  
foreach(DataListItem i in this.DataList1.Items)
{
bool IsChecked=((CheckBox)i.FindControl("deletectr")).Checked;
if(IsChecked)
{
string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];
}
}

実行中のカスタムデータリストコントロール
 
  
// DataList
private void DataList1_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
switch(e.Item.ItemType)
{ case ListItemType.Header:
e.Item.ForeColor=Color.Red;
e.Item.BackColor=Color.Black;
break;
case ListItemType.Item:
e.Item.BackColor=Color.Black;
break;
}
}
// ,
private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if((e.Item.ItemType==ListItemType.Header)||(e.Item.ItemType==ListItemType.Item))
{
System.Data.Common.DbDataRecord drv=
(System.Data.Common.DbDataRecord)e.Item.DataItem;
if((decimal)drv[" "]<1000)
{
e.Item.ForeColor=Color.Red;
}
}
}

別の方法
 
  
if((e.Item.ItemType==ListItemType.Header)||(e.Item.ItemType==ListItemType.Item))
{
DataRowView drv=(DataRowView)e.Item.DataItem;
string department=(string)drv[" "];
switch(department)
{ case " ":
e.Item.BackColor=Color.Black;
break;
case " ":
e.Item.BackColor=Color.Red;
break; }
}