2012-10-17 46 views
0

我正在使用從SQL數據庫提供的gridview。我需要添加一個自定義itemTemplate,它將包含從另一個數據源提供的checkboxlist。下面是我的XML部分:如何從代碼隱藏更新editItemTemplate複選框列表?

 <asp:TemplateField HeaderText="Equipements" > 
      <EditItemTemplate> 
       <asp:CheckBoxList ID="myCB" runat="server"> 
       </asp:CheckBoxList> 
      </EditItemTemplate> 
     </asp:TemplateField> 

我使用的GridView onEditing事件來嘗試訪問「myCB」在後面的代碼:

protected void OnEditing(object sender, EventArgs e) 
    { 
     GridView gridview = sender as GridView; 
     GridViewEditEventArgs editEvent = e as GridViewEditEventArgs; 
     ListViewItemEventArgs rowEvent = e as ListViewItemEventArgs; 
     TableCell equipementsCell = gridview.Rows[editEvent.NewEditIndex].Cells[11]; 

     CheckBoxList equipements = gridview.Rows.FindControl("myCB") as CheckBoxList; 
    } 

此代碼不能正常工作時,CheckBoxList的ISN」找到了。我已經嘗試了很多事情失敗...

+0

你在'gridview.FindControl看( 「myCB」)' – mcalex

回答

0

您應該使用GridView的RowDataBound事件:

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow 
    && e.Row.RowState == DataControlRowState.Edit) 
    { 
     CheckBoxList equipements = (CheckBoxList)e.Row.FindControl("myCB"); 
     equipements.DataSource = getSomeData(); 
     equipements.DataTextField = "TextColumn"; 
     equipements.DataTextField = "IdColumn"; 
     equipements.DataBind(); 
    } 
} 
+0

可他使用RowEditing事件與'( CheckBoxList)gridview.Rows [e.NewEditIndex] .FindControl(「myCB」)'定位數據源並將其綁定到列表中? – MrZulu

+0

@MrZulu:編輯我的答案。我完全錯過了'EditItemTemplate'部分。 –