编辑DataGrid时动态绑定DropDownList

 

前台代码:
   < 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");
//...................
        
        }

 

其他的事件和一般情况下的差不多。没有什么值得做个笔记的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值