2013-05-17 58 views
1

看來CheckBoxField不會接受ID屬性,所以我不能直接在代碼後面調用該組件的文件。從文件後面的代碼檢查CheckBoxField

<asp:DetailsView ID="dv" runat="server" AutoGenerateRows="False" 
    DataKeyNames="ID" DataSourceID="ds" DefaultMode="Insert" 
    OnItemInserting="dv_ItemInserting" OnItemInserted="dv_ItemInserted" 
    OnItemUpdated="dv_ItemUpdated" OnItemCommand="dv_ItemCommand" 
    EnableModelValidation="True"> 
    <Fields> 
     <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="false" ReadOnly="True" SortExpression="ID" /> 
     <asp:CheckBoxField ID="chkMidmarket" DataField="Midmarket_Flag" HeaderText="Midmarket" SortExpression="Midmarket_Flag" runat="server" /> 
     ... 
    </Fields> 
</asp:DetailsView> 

如何從代碼隱藏文件中選中複選框?

+0

即使使用runat服務器屬性,我也會得到以下錯誤:類型'System.Web.UI.WebControls.CheckBoxField'沒有名爲'ID'的公共屬性。 – stats101

+0

''總是放在另一個控件中,比如''。編輯您的問題並提供該控件的標記。 –

+0

@MichaelLiu根據要求更新代碼 – stats101

回答

2

在syour設計視圖去GridView的編輯欄,選擇列,然後單擊轉換爲模板字段

<asp:TemplateField HeaderText="Midmarket" SortExpression="Midmarket_Flag"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged ="CheckBox_CheckedChanged" 
       Checked='<%# Bind("Midmarket_Flag") %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 

現在你可以添加click事件如上,你的事件類似下面

protected void CheckBox_CheckedChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     CheckBox cb = sender as CheckBox; 
     GridViewRow gr = cb.Parent.Parent as GridViewRow; 
     string key = GridView1.DataKeys[gr.DataItemIndex].Value.ToString(); 
    } 
    catch (Exception exc) 
    { 
    } 
} 
1

使用

<asp:CheckBox ID="youid" runat="server" /> 

這樣你可以從你的代碼中訪問它背後

youid.Checked = true; 
+0

我需要使用CheckBoxField而不是CheckBox – stats101

相關問題