要在DataGrid中使用DropDownList 需要使用到
1。DataGrid的DataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)事件
ItemDataBoundz在项被数据绑定到DataGrid控件后发生
2。ListTypeItem枚举
指定列表控件中项的类型
成员名称 | 说明 |
---|---|
AlternatingItem | 交替(从零开始的偶数索引)单元格中的项。它是数据绑定的。 |
EditItem | 列表控件中当前处于编辑模式的项。它是数据绑定的。 |
Footer | 列表控件的页脚。它不是数据绑定的。 |
Header | 列表控件的页眉。它不是数据绑定的。 |
Item | 列表控件中的项。它是数据绑定的。 |
Pager | 页导航,显示定位到与 DataGrid 控件关联的不同页的控件。它不是数据绑定的。 |
SelectedItem | 列表控件中的选定项。它是数据绑定的。 |
Separator | 列表控件中项之间的分隔符。它不是数据绑定的。 |
例子:
aspx页---只给出页中DataGrid部分
<asp:DataGrid id=“myDatagrid“ Runat="server">
<COLUMNS>
<asp:TemplateColumn HeaderText="事务">
<ITEMTEMPLATE>
<%# DataBinder.Eval(Container.DataItem,"事务") %>
</ITEMTEMPLATE>
<EDITITEMTEMPLATE>
<asp:DropDownList id=dropdown runat="server"></asp:DropDownList> //DropDownList在那种标签中决定数据绑定的ListTypeItem的选择
</EDITITEMTEMPLATE>
</asp:TemplateColumn>
</COLUMNS><BR></asp:DataGrid></P>
.CS文件
private void myDatagrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.EditItem)? //如果出现“未将对象引用设置到对象的实例”的错误,多半缺少这一判断或者是ListItemType选择错误。
{
SqlConnection conn = new SqlConnection(“DataBase=Test;Uid=sa;Pwd;Server=(local)“);
SqlDataAdapter da = new SqlDataAdapter(“select * from Users“,conn);
DataSet ds = new DataSet();
da.Fill(ds);
DropDownList drop = (DropDownList)e.Item.FindControl(“dropdown“);
drop.DataTextField = "ID";
drop.DataValueField ="CusName";
drop.DataSource = ds.Tables[0].DefaultView;
drop.DataBind();
}
}