前台代码:
<
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 >
< 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;也可以用这个赋初始值
}
}
... {
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");
//...................
}
... {
int empID =Convert.ToInt16(DataGrid1.DataKeys[(int)e.Item.ItemIndex]);
DropDownList DropDownList1=(DropDownList)e.Item.FindControl("DropDownList1");
//...................
}
其他的事件和一般情况下的差不多。没有什么值得做个笔记的。