2011-03-31 51 views
4

我有兩個列一個用於其他複選框的ID爲&。 我已經採取了gridview內的複選框。 我想看看在GridView內部檢查的值,如果複選框被選中的話,我想這些值,即ID Asp.net在gridview(Asp.net)中獲取所選複選框的ID c#

+0

我沒有得到答案了我想這也較早,但我得到來自數據庫的所有值,因爲我只想檢查值。假設我只檢查了3個值然後我只想要3個值並不是所有的值 – Ishika 2011-04-01 04:54:15

+0

你只需要檢查checkboes的值並創建id的字符串,我認爲會爲你工作 – 2011-04-01 06:57:06

+0

我爲它寫代碼但沒有獲取值。這裏當我選中該複選框時,它也會給出錯誤的值。請幫我 – Ishika 2011-04-01 07:21:39

回答

4
foreach(Gridviewrow gvr in Gridview1.Rows) 
{ 
if(((CheckBox)gvr.findcontrol("CheckBox1")).Checked == true) 
{ 

    int uPrimaryid= gvr.cells["uPrimaryID"]; 
} 
} 
+0

我認爲他的問題是,與一個正常的asp:CheckBoxField你實際上不能設置它的ID,所以你必須將其轉換爲模板字段? – 2011-03-31 12:59:37

+0

是的,那裏沒有其他解決方案 – 2011-03-31 13:02:39

+0

我使用的代碼,但它沒有給予檢查值,即id:foreach(reviewview.rid中的GridViewRow行){CheckBox cb =(CheckBox)row.FindControl(「chkmark」); if(cb.Checked == true){int markid = Convert.ToInt32(reviewgrid.DataKeys [row.RowIndex] .Value); }} – Ishika 2011-04-01 04:41:48

1

你將要做的是使用模板領域:

<asp:TemplateField HeaderText="Field"> 
          <ItemTemplate> 
           <div style="display: block"> 
            <asp:Checkbox Checked='<%# DataBinder.Eval(Container.DataItem,"Field") %>' 
             runat="server" ID="chkField"></asp:Label> 
           </div> 
          </ItemTemplate> 
         </asp:TemplateField> 

然後,你可以這樣做:

foreach (DataGridRow dr in DataGrid1.Rows) 
{ 
    ((CheckBox)gvr.FindControl("chkField")).Checked 
} 

,看它是否已選中

0
<asp:gridview id="gv" runat="server"> 
    <columns> 
    <asP:TemplateField> 
     <Asp:checkbox id="chk" runat="server" /> 
     <Asp:literal id="ltlID" runat="server" visible="false" text='<%#eval("ID")%>' /> 
    </asp:TemplateField> 
    </columns> 
</asp:gridview> 

For each row as gridviewrow in gv.rows 
    if ctype(row.findcontrol("chk"),checkbox).checked then 
     Dim _ID as integer = ctype(row.findcontrol("ltlID"),literal).text 
    end if 
next 
1
在你的aspx

您有以下

<asp:GridView ID="gridViewID" runat="server" DataKeyNames="DataKey1,DataKey2,DataKey3" > 
    <Columns> 
     <asp:TemplateField HeaderText="selected"> 
     <ItemTemplate> 
      <asp:CheckBox ID="checkBoxID" runat="server" 
       Checked='<%# Bind("Selected") %>' 
       OnCheckedChanged="checkBoxID_CheckedChanged" 
       AccessKey='<%# Container.DataItemIndex %>' 
       AutoPostBack="True" /> 
     </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
在事件處理

然後,你做同樣的事情到這一點:

protected void checkBoxID_CheckedChanged(object sender, EventArgs e) 
{ 
    var checkbox = (CheckBox)sender; 
    var rowIndex = Convert.ToInt32(checkbox.AccessKey); 
    var gridView = GetErhebungModulGridView(); 
    var dataKey = gridView.DataKeys[rowIndex]; 
    if (dataKey != null) 
    { 
     var dataKey1 = dataKey["DataKey1"]; 
     var dataKey2 = dataKey["DataKey2"]; 
     var dataKey3 = dataKey["DataKey3"]; 

     //Do something with the variables keys above 

    } 
} 
+0

什麼是GetErhebungModulGridView()? – Kardo 2014-07-26 12:02:42

+0

GetErhebungModulGridView()只是一個FindControl(「id」)調用,我們封裝在一個方法中,因爲它在多個位置使用 - 對於混淆 – msgrockclimber 2014-10-27 16:05:56

相關問題