日期:2014-05-19  浏览次数:20475 次

DataGrid控件中数据编辑问题
在DataGrid控件中绑定了数据库里用户表的性别列,现在想实现的功能是
点击编辑按扭的时候,DataGrid控件中性别列一DropDownList空件显示,并且默认选项为编辑前的内容.
aspx页里我是这样写的:
<asp:TemplateColumn   HeaderText= "性别 "   HeaderStyle-Width= "95 ">
<itemtemplate>   <%#   DataBinder.Eval(Container.DataItem, "Sex ")%> </itemtemplate>
<edititemtemplate>
<asp:DropDownList   ID= "usex "   AutoPostBack= "false "     Width= "80 "   runat= "server "> <asp:ListItem> 男 </asp:ListItem> <asp:ListItem> 女 </asp:ListItem> </asp:DropDownList>
</edititemtemplate>
</asp:TemplateColumn>
但不知道后置代码文件怎么写
不知道有谁写过,指点下.



------解决方案--------------------
你把你绑定的和显示的列分开;
private void dlsList_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
DropDownList ddl = (DropDownList)(e.Item.FindControl( "usex "));
ddl.SelectValues = e.Item.Cells[i].Text;//i为你第几列
}
------解决方案--------------------
先把 <%# DataBinder.Eval(Container.DataItem, "Sex ")%> 绑定到dropdownlist的ToolTip属性上:
<asp:DropDownList ID= "usex " AutoPostBack= "false " ToolTip= ' <%# DataBinder.Eval(Container.DataItem, "Sex ")%> ' Width= "80 " runat= "server ">


ItemBound事件中,ItemType为 ListItemType.EditItem状态下,根据dropdownlist的tooltip的值来设置dropdownlist的选择值
------解决方案--------------------
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
for(int i = 0;i <dt_M_Form_Operation.Rows.Count;i++)
{
DropDownList ddlDefault = (DropDownList)this.dgLeft.Items[i].Cells[0].Controls[1];
string form_attribute = dt_M_Form_Operation.Rows[i][1].ToString(); //取数据集中的字段(男 or 女 或者是 ID)

switch(form_attribute)
{
case "1 " :
ddlDefault.SelectedIndex = 1;
break;
case "2 " :
ddlDefault.SelectedIndex = 2;
break;
}
}
}
}

private void dgLeft_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//初始化DataGrid控件中的DropDownList
if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
{
DropDownList ddl = (DropDownList)e.Item.FindControl( "usex ");
ddl.Items.Insert(1, "男 ");
ddl.Items.Insert(2, "女 ");
}
}