編輯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");
//...................
        
        }

 

其他的事件和一般情況下的差不多。沒有什麼值得做個筆記的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章