2013-02-26 2 views
0

확인란이있는 GridView가 있습니다. 그러나 주어진 행의 체크 박스가 체크되었는지 아닌지를 결정하는 데있어 실질적인 문제가 있습니다.격자보기에서 확인란의 상태를 확인할 수 없습니다.

행에서 특정 값을 검색하여 코드에 입력해야합니다. 그러나 GridView 행을 반복 할 때 프로그램은 checkBox'x 상태를 확인하는 if 문을 입력하지 않습니다. 여기

Dim Primaryid As String = "Initial stage" 
    For Each gvr As GridViewRow In GridView1.Rows 

     If (CType(gvr.FindControl("CheckBox1"), CheckBox)).Checked = True Then 
      Primaryid = gvr.Cells(1).Text 
     End If 
    Next gvr 

    Dim exmess As String = "alert('" & Primaryid & "')" 
    Page.ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", exmess, True) 

그리고

가의 GridView의 코드입니다 : 여기

백엔드의 코드입니다. 페이지를로드 할 때 자동으로 채워집니다 :

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
     GridLines="None" Width="1500px"> 
     <Columns> 

        <asp:TemplateField > 
         <ItemTemplate> 
          <asp:CheckBox ID="CheckBox1" runat="server" /> 
         </ItemTemplate> 
        </asp:TemplateField> 

      </Columns> 
     <AlternatingRowStyle BackColor="White" /> 
     <EditRowStyle BackColor="#2461BF" /> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#EFF3FB" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
     <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
     <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
     <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
    </asp:GridView> 

실수로 저를 지적 할 수 있으면 매우 감사하게 생각합니다.

답변

0

이것을 사용해보십시오, winforms에서 작동합니다. 그것이 당신을 위해 일할 것이라고 약속 할 수는 없습니다. 셀 값을 하드 코딩 했으므로 셀을 사용자가 얻는 방법으로 가져올 수 있어야합니다.

어쨌든, 주요 아이디어는 "확인 된"값을 얻으려고 시도하는 것이 아니라 (동일한 것이기 때문에) 셀의 값을 확인하는 것입니다. 그래서 기본적으로 셀 값을 부울 객체로 파싱합니다.

For Each r As DataGridViewRow In DataGridView1.Rows 
    Dim b As Boolean = False 
    Boolean.TryParse(r.Cells("CheckBox1").Value, b) 
    If b Then 
     'Do stuff 
    End If 
Next 

편집 : wops는 C#으로 그것을했다 : F 나에게 초를주고 나는 VB를 게시합니다 :이 유 도움이 될 수보십시오 P

+0

저는 방금 선택한 행의 셀 값을 가져 오지 못하도록 노력했습니다. 그것은 오히려 모든 것을 처리합니다. (만약 if/else 문이라면 바깥쪽에 넣을 것입니다) 아니면 안쪽에 아무것도 넣지 않을 것입니다. – meks

+0

그리고 왜 yo9u는'Cells [3]'이 항상 첫 번째 열에 오는 체크 박스의 값을 검사하지 않는가? 그리드보기? – meks

+0

선택한 행을 원하면 GridView1.SelectedRows와 같아야합니다. 이렇게하려면 GridView에서 FullrowSelect를 선택 모드로 설정해야합니다. – WozzeC

0

.

Dim Primaryid As String = "Initial stage" 
    For Each row As GridViewRow In GridView1.Rows 
     Dim chk As CheckBox = TryCast(row.Cells(0).Controls(0), CheckBox) 

     If chk.Checked Then 
     End If 
    Next 

날은 당신의 체크 박스 컨트롤을 찾을 & 모든 행을 통해 당신은 반복해야

1

작업 또는 있지 않다면 다음, 알고 그 확인 상태를 확인하자. 예를 들어 작업 확인 (I 온라인 변환기를 사용하여 VB로 변환)

Protected Sub btnGetSelectedRows_Click(sender As Object, e As EventArgs) 
Dim items = New StringBuilder() 
For Each grow As GridViewRow In GridView1.Rows 
    Dim chkTemp As CheckBox = DirectCast(grow.FindControl("chkSelectRow"), CheckBox) 
    If chkTemp IsNot Nothing Then 
     If chkTemp.Checked Then 
      items.Append(String.Format("{0},", GridView1.DataKeys(grow.RowIndex)("ProductID").ToString())) 
     End If 
    End If 
Next 

If items.Length > 0 Then 
     Response.Write("You selected Ids:" & Convert.ToString(items)) 
    End If 

End Sub 

그리고 영문

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" 
     AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="ProductID"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkSelectRow" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
       InsertVisible="False" ReadOnly="True" SortExpression="ProductID" /> 
      <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
       SortExpression="ProductName" /> 
      <asp:BoundField DataField="SupplierID" HeaderText="SupplierID" 
       SortExpression="SupplierID" /> 
      <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" 
       SortExpression="CategoryID" /> 
      <asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit" 
       SortExpression="QuantityPerUnit" /> 
      <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" 
       SortExpression="UnitPrice" /> 
      <asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" 
       SortExpression="UnitsInStock" /> 
      <asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" 
       SortExpression="UnitsOnOrder" /> 
      <asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" 
       SortExpression="ReorderLevel" /> 
      <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" 
       SortExpression="Discontinued" /> 
      <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" 
       SortExpression="CategoryName" /> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
     SelectCommand="SELECT * FROM [Alphabetical list of products]"></asp:SqlDataSource> 
    <br /> 

공지 사항, 나는

DataKeys에게

속성을 사용했다 행의 기본 키에 액세스합니다. 나중에 gridview에서 열을 변경하면 장기간에 cellIndex가 실패하여 셀 값에 액세스하는 것과 동일한 작업을 수행 할 것을 권장합니다.

Damien.

관련 문제