前台代码:
<asp:DataGrid DataKeyField="id" id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
//.....................
<asp:TemplateColumn HeaderText="材质">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Metal") %>' ID="Label2">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
</EditItemTemplate>
</asp:TemplateColumn>
//.....................
</Columns> 
后台代码:
事件ItemDataBound--这是关键事件
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
...{
if(e.Item.ItemType==ListItemType.EditItem)
...{
DropDownList DropDownList1=(DropDownList)e.Item.FindControl("DropDownList1");
DropDownList1.DataSource=helper1.sel("SELECT * from AT_Rating");
DropDownList1.DataTextField="cname";
DropDownList1.DataValueField="id";
DropDownList1.DataBind();
string str=Convert.ToString(DataBinder.Eval(e.Item.DataItem,"Metal"));
for (int i = 0; i < DropDownList1.Items.Count; i++)
if (DropDownList1.Items[i].Text == str)
...{
DropDownList1.SelectedIndex = i;
}
//DropDownList1.Items.FindByText(str).Selected=true;也可以用这个赋初始值
}
}UpdateCommand事件:
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
...{
int empID =Convert.ToInt16(DataGrid1.DataKeys[(int)e.Item.ItemIndex]);
DropDownList DropDownList1=(DropDownList)e.Item.FindControl("DropDownList1");
//...................
}
其他的事件和一般情况下的差不多。没有什么值得做个笔记的。
134

被折叠的 条评论
为什么被折叠?



