2014-10-06 71 views
0

我有一个DataGrid,它具有用于选择特定用户的复选框。点击Ok按钮后,我应该得到复选框的状态,如果选中,则获取该行的ID。我到达复选框,但值总是Checked = false,当然,即使当我检查我的复选框。代码如下:无法获取数据网格中的复选框值ASP.NET

的.aspx

 <Columns> 

      <asp:TemplateColumn HeaderText="Odabir"> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkVjezba" runat="server" Enabled="true"/> 
       </ItemTemplate> 
      </asp:TemplateColumn> 

      <asp:BoundColumn HeaderText="Vježba" DataField="Naziv"></asp:BoundColumn> 

      <asp:TemplateColumn HeaderText="Broj serija"> 
       <ItemTemplate> 
        <asp:TextBox ID="brojSerija" runat="server" Width="20px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateColumn> 

      <asp:TemplateColumn HeaderText="Ocjena 6"> 
       <ItemTemplate> 
        <asp:TextBox ID="ocjena6" runat="server" Width="20px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateColumn> 

      <asp:TemplateColumn HeaderText="Ocjena 7"> 
       <ItemTemplate> 
        <asp:TextBox ID="ocjena7" runat="server" Width="20px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateColumn> 

      <asp:TemplateColumn HeaderText="Ocjena 8"> 
       <ItemTemplate> 
        <asp:TextBox ID="ocjena8" runat="server" Width="20px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateColumn> 

      <asp:TemplateColumn HeaderText="Ocjena 9"> 
       <ItemTemplate> 
        <asp:TextBox ID="ocjena9" runat="server" Width="20px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateColumn> 

      <asp:TemplateColumn HeaderText="Ocjena 10"> 
       <ItemTemplate> 
        <asp:TextBox ID="ocjena10" runat="server" Width="20px"></asp:TextBox> 
       </ItemTemplate> 
      </asp:TemplateColumn> 
     </Columns> 

    </asp:DataGrid> 

我的.cs代码文件:

foreach (DataGridItem row in vjezbeGrid.Items) 
      { 
      if (((CheckBox)row.Cells[0].FindControl("chkVjezba")).Checked) 
      { 
       //something 
      } 

     } 

感谢。

回答

1

你可能会在每次回传数据绑定。确保你的数据绑定只有在!Page.IsPostBack。

+0

就是这样!大。我刚刚在页面加载事件中添加if(!IsPostBack) – rukfash 2014-10-06 14:31:14

1

尝试这样

foreach (DataGridItem row in vjezbeGrid.Items) 
     { 
      if (row.ItemType == ListItemType.Item) 
      { 
       CheckBox chkVjezba = (CheckBox)row.FindControl("chkVjezba"); 

       if (chkVjezba.Checked) 
       { 
        //something 
       } 
      } 

     } 
+0

谢谢,添加if(!isPostBack)到pageLoad事件解决了这个问题。 – rukfash 2014-10-06 14:32:06

+0

@rukfash不要忘记标记为answer.whose的答案对你更有帮助 – 2014-10-06 16:00:55