在使用IE的GridView复选框 [英] Checkboxes in Gridview using IE

查看:130
本文介绍了在使用IE的GridView复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到一个奇怪的问题。我想看看有什么复选框被GridView控件中选择。我的code看起来像它遵循我在互联网上找到的例子,而在FF&功放的工作原理; Chrome浏览器,但却未能在IE9。
在IE9中,选中属性永远返回true。我已经通过了code台阶状,已经验证了它在寻找正确的复选框,但IE浏览器将始终返回false。

有没有人有什么想法?下面是我的标记和放大器; codebehind。

 < ASP:GridView控件ID =gvParts=服务器
      AllowSorting =真的AutoGenerateColumns =FALSE
      CELLPADDING =5的DataKeyNames =Rec_ID的DataSourceID =dsParts
      每页=50WIDTH =100%>
        <柱体和GT;
            < ASP:的TemplateField的HeaderText =选择>
                <&HeaderTemplate中GT;
                    选择
                < / HeaderTemplate中>
                <&ItemTemplate中GT;
                    < ASP:复选框ID =chkSelect=服务器/>
                < / ItemTemplate中>
                < ItemStyle Horizo​​ntalAlign =中心WIDTH =960x75像素/>
            < / ASP:的TemplateField>
            < ASP:BoundField的数据字段=Arcft_Make的HeaderText =让
                SORTEX pression =Arcft_Make>
            < HeaderStyle Horizo​​ntalAlign =左/>
            < ItemStyle Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=Arcft_Model的HeaderText =模式
                SORTEX pression =Arcft_Model>
            < HeaderStyle Horizo​​ntalAlign =左/>
            < ItemStyle Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=SOURCE_NAME
                            的HeaderText =SOURCE_NAME
                            SORTEX pression =SOURCE_NAME
                            DataFormatString ={0:D}
                            HtmlEn code =false的>
            < HeaderStyle Horizo​​ntalAlign =左/>
            < ItemStyle Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=零件号码
                            的HeaderText =型号
                            SORTEX pression =零件号码>
            < HeaderStyle Horizo​​ntalAlign =左/>
            < ItemStyle Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=Vendor_Part_Number
                            的HeaderText =供应商编号
                            SORTEX pression =Vendor_Part_Number>
            < HeaderStyle Horizo​​ntalAlign =左/>
            < ItemStyle Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=VENDOR_NAME
                            的HeaderText =供应商名称
                            SORTEX pression =VENDOR_NAME>
            < HeaderStyle Horizo​​ntalAlign =左/>
            < ItemStyle Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=DESCR
                            的HeaderText =说明
                            SORTEX pression =DESCR>
                < HeaderStyle Horizo​​ntalAlign =左/>
                < ItemStyle WIDTH =300像素Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=DATE_ADDED
                            的HeaderText =DATE_ADDED
                            SORTEX pression =DATE_ADDED>
            < HeaderStyle Horizo​​ntalAlign =左/>
            < ItemStyle Horizo​​ntalAlign =左/>
            < / ASP:BoundField的>
            < ASP:BoundField的数据字段=Rec_ID
                            只读=真可见=假>
                < ItemStyle宽度=0像素/>
            < / ASP:BoundField的>
            < ASP:CommandField中ShowEditButton =真/>
        < /专栏>
        < SelectedRowStyle背景色=#FFFFCC/>
        < AlternatingRowStyle背景色=#CCFFFF/>
    < / ASP:GridView的>

`

 保护小组btnAdd_Click(BYVAL发件人为对象,BYVAL E上System.EventArgs)
                         处理btnAdd.Click
    昏暗Rec_IDs作为新的列表(串)
    昏暗Rec_ID作为的Int32
    Rec_IDs =会议(Rec_IDs)
    对于每一行作为GridViewRow在gvParts.Rows
        如果CTYPE(Row.FindControl(chkSelect),复选框),然后.Checked
            Rec_ID = gvParts.DataKeys(Row.RowIndex).value的
            如果不Rec_IDs.Contains(Rec_ID)然后
                Rec_IDs.Add(Rec_ID)
            万一
            CTYPE(Row.FindControl(chkSelect),复选框).Checked =假
        万一
    下一个
    会议(Rec_IDs)= Rec_IDs
    lblCount.Text =的String.Format(您选择{0}记录
                                   Rec_IDs.Count.ToString)
结束小组


解决方案

确定,解决了。我的GridView不是我的表单标签内。我猜IE浏览器不喜欢这一点。

I'm running into a strange issue. I'm trying to see what checkboxes are selected within the gridview. My code looks like it follows the examples I found on the internet, and works in FF & Chrome, but fails in IE9. In IE9, the checked property never returns true. I've stepped through the code, and have verified that it's looking at the correct checkbox, but IE will always return false.

Does anyone have any ideas? Below is my markup & codebehind.

    <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>

`

And

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

解决方案

OK, solved. My gridview wasn't inside my form tags. I guess IE didn't like that.

这篇关于在使用IE的GridView复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆