1

私は奇妙な問題に遭遇しています。グリッドビュー内でどのチェックボックスが選択されているかを確認しようとしています。私のコードは、インターネットで見つけた例に従っているように見え、FF と Chrome では動作しますが、IE9 では失敗します。IE9 では、checked プロパティが true を返すことはありません。コードを確認し、正しいチェックボックスが表示されていることを確認しましたが、IE は常に false を返します。

誰にもアイデアはありますか?以下は私のマークアップとコードビハインドです。

    <asp:GridView ID="gvParts" runat="server" 
      AllowSorting="True" AutoGenerateColumns="False"
      CellPadding="5" DataKeyNames="Rec_ID" DataSourceID="dsParts" 
      PageSize="50" Width="100%">
        <Columns>
            <asp:TemplateField HeaderText="Select">
                <HeaderTemplate>
                    Select
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox ID="chkSelect" runat="server"/>
                </ItemTemplate>
                <ItemStyle HorizontalAlign="Center" Width="75px" />
            </asp:TemplateField>
            <asp:BoundField DataField="Arcft_Make" HeaderText="Make" 
                SortExpression="Arcft_Make" >
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Arcft_Model" HeaderText="Model" 
                SortExpression="Arcft_Model" >
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Source_Name" 
                            HeaderText="Source_Name" 
                            SortExpression="Source_Name" 
                            DataFormatString="{0:d}" 
                            HtmlEncode="false">
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Part_Number" 
                            HeaderText="Part Number" 
                            SortExpression="Part_Number" >
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Vendor_Part_Number" 
                            HeaderText="Vendor Number" 
                            SortExpression="Vendor_Part_Number" >
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Vendor_Name" 
                            HeaderText="Vendor Name" 
                            SortExpression="Vendor_Name" >
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Descr" 
                            HeaderText="Description" 
                            SortExpression="Descr">
                <HeaderStyle HorizontalAlign="Left" />
                <ItemStyle Width="300px" HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Date_Added" 
                            HeaderText="Date_Added" 
                            SortExpression="Date_Added">
            <HeaderStyle HorizontalAlign="Left" />
            <ItemStyle HorizontalAlign="Left" />
            </asp:BoundField>
            <asp:BoundField DataField="Rec_ID" 
                            ReadOnly="True" Visible="False">
                <ItemStyle Width="0px" />
            </asp:BoundField>
            <asp:CommandField ShowEditButton="True" />
        </Columns>
        <SelectedRowStyle BackColor="#FFFFCC" />
        <AlternatingRowStyle BackColor="#CCFFFF" />
    </asp:GridView>

`

Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
                         Handles btnAdd.Click
    Dim Rec_IDs As New List(Of String)
    Dim Rec_ID As Int32
    Rec_IDs = Session("Rec_IDs")
    For Each Row As GridViewRow In gvParts.Rows
        If CType(Row.FindControl("chkSelect"), CheckBox).Checked Then
            Rec_ID = gvParts.DataKeys(Row.RowIndex).Value
            If Not Rec_IDs.Contains(Rec_ID) Then
                Rec_IDs.Add(Rec_ID)
            End If
            CType(Row.FindControl("chkSelect"), CheckBox).Checked = False
        End If
    Next
    Session("Rec_IDs") = Rec_IDs
    lblCount.Text = String.Format("You have {0} records selected",   
                                   Rec_IDs.Count.ToString)
End Sub
4

1 に答える 1

1

わかりました、解決しました。グリッドビューがフォーム タグ内にありませんでした。IEはそれが気に入らなかったと思います。

于 2012-05-16T02:16:06.097 に答える