ASP.Net Gridview Not Allowing Rows To be Selected After Certain Value In DataKey

I've been utilizing what I call, "drag, drop and configure" programming for years to create very simple ASP.net forms to collect data for my organization. Basically, I'll drag a datasource into my design view, configure it, and then I'll drag a gridview into the design view and then configure it, etc., etc.

Yesterday, I encountered a behavior I have never seen. My gridview is set to allow row selection. Everything seemed to be working normally until I happened to click on a row that didn't "select" (didn't highlight itself, etc.). And, then I started clicking on other rows and found more that couldn't be selected. Again -- it's not all the rows...just some. i.e. some can be selected and others can't.

After a lot of troubleshooting, the only thing I've been able to determine is that above a certain datakey value -- rows won't select. In this case, its datakeys with values around and > 40,000. Anything below that, and the rows select and the other parts of the form load just fine. The fact that it works for all records with datakeys below a certain value is really stumping me as to what rock to look under next -- hence, actually creating a stackoverflow account and posing the question.

Code for the gridview is below. It does live within an update panel if that matters. Also provided the code behind, though it's not really doing anything of consequence.

Note:

  1. The datakey that seems to be controlling the behavior is a unique identifier for an application within a set of applications. It's not an incremental identity. --- if that helps.
  2. The form is hooked into a database for the select statement and is pulling records from a view to populate the grid.
  3. I'm tempted to show all of my code including the database side and stored procs -- thinking maybe I'm making rookie mistakes with data typing, etc. --- BUT --- I'm pausing there because the gridview selection IS WORKING -- just not above datakeys around and above 40,000
  4. Lastly, when you attempt to select an item with a key > 40,000 the grid will no longer sort by columns or allow you to click a different page. Similarly, if you sort the grid FIRST by applicationID (the datakey) -- all the pages with datakeys > 40,000 are not clickable i.e. pagination for those pages do not work

EDIT --- DANG IT!!! I posted the wrong code behind. I replaced it with the right one. UPDATE: It looks like it's related to the panels. When I comment them out --- it works. When they are included -- the rows in question (keys > 40000) aren't selectable. All this code does is control visibility of panels. How could visibility properties make this kind of impact....weird

Pic of Issue:

Pic of Issue

  <ContentTemplate>
                <strong>
                <asp:ScriptManager ID="ScriptManager2" runat="server">
                </asp:ScriptManager>
                Select AIT by using search box below or by sorting and paging through AIT table.<br />
                <br />
                Search:&nbsp; </strong>&nbsp;<asp:TextBox ID="TxtAITSearch" runat="server"></asp:TextBox>
                &nbsp;&nbsp;&nbsp;
                <asp:Button ID="btn_Search" runat="server" OnClick="btn_Search_Click" Text="Search" />
                <em>
                <br />
                *wildcard searches for AIT number, AIT Name or AIT Manager may be used</em><asp:HiddenField ID="hdnApl_ID" runat="server" />
                <asp:HiddenField ID="hdn_StandardID" runat="server" />
                <asp:HiddenField ID="Hdn_AlignmentID" runat="server" />
                <asp:HiddenField ID="hdn_Attribute" runat="server" />
                <br />
                <asp:GridView ID="gvAITSelect" runat="server" AllowPaging="True" AllowSorting="True"  AutoGenerateColumns="False" CellPadding="3" DataKeyNames="applicationID" DataSourceID="DSGetSearchView" GridLines="Vertical" OnSelectedIndexChanged="gvAITSelect_SelectedIndexChanged" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px">
                    <AlternatingRowStyle BackColor="#DCDCDC" />
                    <Columns>
                        <asp:CommandField ShowSelectButton="True" />
                        <asp:BoundField DataField="applicationID" HeaderText="App ID" SortExpression="applicationID" />
                        <asp:BoundField DataField="fullName" HeaderText="Application" SortExpression="fullName" />
                        <asp:BoundField DataField="Alignment" HeaderText="Alignment" SortExpression="Alignment" />
                        <asp:BoundField DataField="AlignmentID" HeaderText="AlignmentID" SortExpression="AlignmentID" Visible="False" />
                        <asp:BoundField DataField="status" HeaderText="Status" SortExpression="status" />
                        <asp:BoundField DataField="relatedAssociates_2_displayName" HeaderText="App Mgr" SortExpression="relatedAssociates_2_displayName" />
                        <asp:BoundField DataField="relatedAssociates_3_displayName" HeaderText="Tech Exec" SortExpression="relatedAssociates_3_displayName" />
                    </Columns>
                    <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
                    <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                    <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
                    <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
                    <SortedAscendingCellStyle BackColor="#F1F1F1" />
                    <SortedAscendingHeaderStyle BackColor="#0000A9" />
                    <SortedDescendingCellStyle BackColor="#CAC9C9" />
                    <SortedDescendingHeaderStyle BackColor="#000065" />
                </asp:GridView>

 protected void gvAITSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            lbl_Alignment.Text = gvAITSelect.SelectedRow.Cells[3].Text;
            Hdn_AlignmentID.Value = gvAITSelect.SelectedRow.Cells[4].Text;
          

            string strAITvalue = gvAITSelect.SelectedRow.Cells[1].Text;
            hdnApl_ID.Value = strAITvalue.ToString();

            //panel_RoleDetails.Visible = true;
            //panel_AITAlignment.Visible = true;
            //panel_NoteDetails.Visible = true;
        }

Upvotes: 0

Views: 504

Answers (1)

Ok -- I figured it out. And, the answer is, I'm a big dummy. Further, the fact that the grid stopped working around in and around 40000 should have been a big flashlight to me pointing the way. Pic of the issues

If you look at the pic I uploaded -- in the course of troubleshooting an earlier and unrelated issue -- I set the DbType (highlighted row) to Int16. In the available selections I don't see an unsigned Int16 -- so, this appears to be signed---Annnnnnnnnnnnnnnnd, of course, good developers know Int16s hold values up to 32,767. Guess what happened when I changed it back to the default "Object"? Yup. It worked. So the problem not at all weird or strange. Instead, very much a rookie mistake.

All this said -- good learning experience. Additionally, @Albert D. Kallal and @fnostro you both gave me some good understanding on some things for the future. I appreciate both of you trying to help me. And, now I also, have a stackoverflow account :)

Thanks again.

Upvotes: 0

Related Questions