0

テンプレートフィールドとしてチェックボックスを使用して、プロジェクトにデータグリッドがあります。しかし、私はcheckbox.checkedプロパティにアクセスすることはできません。誰かが何か考えを持っていますか?

私のASPコード:

<asp:GridView ID="GVP" runat="server" AutoGenerateColumns="False" DataSourceID="DSP">
     <Columns>
          <asp:TemplateField HeaderStyle-Width="5%" ItemStyle-Width="5%" FooterStyle-Width ="5%">
               <ItemTemplate>
                    <asp:CheckBox ID="SelectCb" runat="server"></asp:CheckBox>
               </ItemTemplate>
               <FooterStyle Width="5%"/>
               <HeaderStyle Width="5%"/>
               <ItemStyle Width="5%"/>
          </asp:TemplateField>
          <asp:BoundField DataField="Answers" HeaderText="Options" SortExpression="Answers" />
     </Columns>
</asp:GridView>

背後にある私のVBコード:

     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles buttonNext.Click
    Dim SelectedBox As Boolean = False
    For Each row As GridViewRow In GVP.Rows
        Dim cb As CheckBox = row.FindControl("SelectCb")
        If cb IsNot Nothing AndAlso cb.Checked Then
            SelectedBox = True
            Dim RID As Integer = Convert.ToInt32(GVP.DataKeys(row.RowIndex).Value)
        Else
            ShowMessage("You did not select anything")
        End if
4

3 に答える 3

0

これを試して:

For Each row As GridViewRow In gvTest.Rows
    Dim cb As CheckBox = row.FindControl("SelectCb")
    If (CType(row.FindControl("SelectCb"), CheckBox)).Checked = True Then
       SelectedBox = True
       Dim RID As Integer = Convert.ToInt32(gvTest.DataKeys(row.RowIndex).Value)
    End If    
Next
于 2012-10-22T19:24:01.827 に答える
0

ここで何をしようとしているのか、どのようにテストしているのかを判断するのは難しいですが、これは行タイプをチェックしていないためだと思います。したがって、最初の行は実際にはヘッダーであるため、チェックボックスはまったくありません(メッセージが表示されます)。

For Each row As GridViewRow In GVP.Rows
    If row.RowType = DataControlRowType.DataRow Then
        Dim cb As CheckBox ... 
于 2012-10-23T05:02:29.840 に答える
0

問題はPage_Load、グリッドをデータソースにバインドしていた場所にありました。削除して問題は解決しました。

于 2012-10-24T16:08:03.873 に答える