在 VisualStudio 2012 中,GridView 上启用的 Select 按钮实际上并没有 select 在 ASP.NET 中的一行

Enabled Select button on GridView does not actually select a row in ASP.NET with VisualStudio 2012

所以我有一个 GridView(如下),在设置 SQLDataSource 时我启用了 selection。我已经为所有其他页面完成了此操作,但我不知道是什么阻止了这一功能。正如我在标题中所说的那样,当我在我的页面上单击 select 时,它实际上并没有 select 该行,我很茫然。

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="There are no records to display." BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataKeyNames="Workstation_ID" GridLines="Vertical" OnRowCommand="GridView1_RowCommand" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<AlternatingRowStyle BackColor="Gainsboro" />
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
           <asp:LinkButton runat="server" ID="DeleteButton" text="Delete"
           CommandName="delete" 
           OnClientClick="if (!window.confirm('Are you sure you want to delete this item?')) return false;" />
        </ItemTemplate>
        <FooterTemplate>
            <asp:LinkButton runat="server" ID="InsertButton" text="Insert"
           CommandName="Insert" OnClick="InsertButton_Click" />
        </FooterTemplate>
    </asp:TemplateField>
    <asp:CommandField ShowEditButton="True" ShowSelectButton="True" />
    <asp:BoundField DataField="Workstation_ID" HeaderText="Workstation_ID" InsertVisible="False" ReadOnly="True" SortExpression="Workstation_ID" Visible="False" />
    <asp:TemplateField HeaderText="Model_Name" SortExpression="Model_Name">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Model_Name") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertModelName" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Model_Name") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Operating_System" SortExpression="Operating_System">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Operating_System") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertOS" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label2" runat="server" Text='<%# Bind("Operating_System") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="RAM" SortExpression="RAM">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("RAM") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertRAM" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label3" runat="server" Text='<%# Bind("RAM") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="HDD_Size" SortExpression="HDD_Size">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("HDD_Size") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertHDD" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label4" runat="server" Text='<%# Bind("HDD_Size") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Unused_HDDspace" SortExpression="Unused_HDDspace">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Unused_HDDspace") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertUnusedHDD" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label5" runat="server" Text='<%# Bind("Unused_HDDspace") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Service_Tag" SortExpression="Service_Tag">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("Service_Tag") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertServiceTag" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label6" runat="server" Text='<%# Bind("Service_Tag") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Admin_Username" SortExpression="Admin_Username">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("Admin_Username") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertAdminUname" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label7" runat="server" Text='<%# Bind("Admin_Username") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Admin_Password" SortExpression="Admin_Password">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox8" runat="server" Text='<%# Bind("Admin_Password") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertAdminPword" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label8" runat="server" Text='<%# Bind("Admin_Password") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Gateway" SortExpression="Gateway">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox9" runat="server" Text='<%# Bind("Gateway") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertGateway" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label9" runat="server" Text='<%# Bind("Gateway") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Date_Last_verified" SortExpression="Date_Last_verified">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox10" runat="server" Text='<%# Bind("Date_Last_verified") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertDate" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label10" runat="server" Text='<%# Bind("Date_Last_verified") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Location_ID" SortExpression="Location_ID">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox11" runat="server" Text='<%# Bind("Location_ID") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:DropDownList ID="LocationDDL" runat="server" DataSourceID="ddlLocationSQL" DataTextField="Location_Name" DataValueField="Location_ID">
            </asp:DropDownList>
            <asp:SqlDataSource ID="ddlLocationSQL" runat="server" ConnectionString="<%$ ConnectionStrings:itassetmgmtConnectionString1 %>" SelectCommand="SELECT [Location_ID], [Location_Name] FROM [Locations]"></asp:SqlDataSource>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label11" runat="server" Text='<%# Bind("Location_ID") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="User_ID" SortExpression="User_ID">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox12" runat="server" Text='<%# Bind("User_ID") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:DropDownList ID="ddlUserID" runat="server" DataSourceID="UserSQL" DataTextField="Username" DataValueField="User_ID">
            </asp:DropDownList>
            <asp:SqlDataSource ID="UserSQL" runat="server" ConnectionString="<%$ ConnectionStrings:itassetmgmtConnectionString1 %>" SelectCommand="SELECT [User_ID], [Firstname], [Lastname], [Username] FROM [Users]"></asp:SqlDataSource>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label12" runat="server" Text='<%# Bind("User_ID") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Dept_ID" SortExpression="Dept_ID">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox13" runat="server" Text='<%# Bind("Dept_ID") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="DeptSQL" DataTextField="Department" DataValueField="Dept_ID">
            </asp:DropDownList>
            <asp:SqlDataSource ID="DeptSQL" runat="server" ConnectionString="<%$ ConnectionStrings:itassetmgmtConnectionString1 %>" SelectCommand="SELECT * FROM [Departments]"></asp:SqlDataSource>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label13" runat="server" Text='<%# Bind("Dept_ID") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Maintenance_ID" SortExpression="Maintenance_ID">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox14" runat="server" Text='<%# Bind("Maintenance_ID") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:DropDownList ID="ddlMaintenance" runat="server" DataSourceID="MaintenanceSQL" DataTextField="Maintenance_ID" DataValueField="Maintenance_ID">
            </asp:DropDownList>
            <asp:SqlDataSource ID="MaintenanceSQL" runat="server" ConnectionString="<%$ ConnectionStrings:itassetmgmtConnectionString1 %>" SelectCommand="SELECT * FROM [Maintenance]"></asp:SqlDataSource>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label14" runat="server" Text='<%# Bind("Maintenance_ID") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Workstation_Name" SortExpression="Workstation_Name">
        <EditItemTemplate>
            <asp:TextBox ID="TextBox15" runat="server" Text='<%# Bind("Workstation_Name") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox ID="insertWstationName" runat="server"></asp:TextBox>
        </FooterTemplate>
        <ItemTemplate>
            <asp:Label ID="Label15" runat="server" Text='<%# Bind("Workstation_Name") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>

</Columns>
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" Wrap="False" />
<HeaderStyle BackColor="#34397D" 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" />

隐藏代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace WebApplication3
{
public partial class Workstation : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string ddl = DropDownList1.SelectedValue;
        if (ddl=="Location_ID")
        {
            RegularExpressionValidator1.Enabled = true;
            RegularExpressionValidator1.ValidationExpression = "^[0-9]*$";
            string FilterExpression = "Convert(Location_ID , 'System.String')  LIKE '%{0}%'";
            SqlDataSource1.FilterParameters.Clear();
            SqlDataSource1.FilterParameters.Add(new ControlParameter(DropDownList1.SelectedValue, "TextBox1", "Text"));
            SqlDataSource1.FilterExpression = FilterExpression;
        } else if (ddl == "User_ID")
        {
            RegularExpressionValidator1.Enabled = true;
            RegularExpressionValidator1.ValidationExpression = "^[0-9]*$";
            string FilterExpression = "Convert(User_ID , 'System.String')  LIKE '%{0}%'";
            SqlDataSource1.FilterParameters.Clear();
            SqlDataSource1.FilterParameters.Add(new ControlParameter(DropDownList1.SelectedValue, "TextBox1", "Text"));
            SqlDataSource1.FilterExpression = FilterExpression;
        }
        else if (ddl == "Dept_ID")
        {
            RegularExpressionValidator1.Enabled = true;
            RegularExpressionValidator1.ValidationExpression = "^[0-9]*$";
            string FilterExpression = "Convert(Dept_ID , 'System.String')  LIKE '%{0}%'";
            SqlDataSource1.FilterParameters.Clear();
            SqlDataSource1.FilterParameters.Add(new ControlParameter(DropDownList1.SelectedValue, "TextBox1", "Text"));
            SqlDataSource1.FilterExpression = FilterExpression;
        }
        else if (ddl == "Maintenance_ID")
        {
            RegularExpressionValidator1.Enabled = true;
            RegularExpressionValidator1.ValidationExpression = "^[0-9]*$";
            string FilterExpression = "Convert(Maintenance_ID , 'System.String')  LIKE '%{0}%'";
            SqlDataSource1.FilterParameters.Clear();
            SqlDataSource1.FilterParameters.Add(new ControlParameter(DropDownList1.SelectedValue, "TextBox1", "Text"));
            SqlDataSource1.FilterExpression = FilterExpression;
        }
        else
        {
            string FilterExpression = string.Concat(DropDownList1.SelectedValue, " LIKE '%{0}%'");
            SqlDataSource1.FilterParameters.Clear();
            SqlDataSource1.FilterParameters.Add(new ControlParameter(DropDownList1.SelectedValue, "TextBox1", "Text"));
            SqlDataSource1.FilterExpression = FilterExpression;
        }
        GridView1.DataBind();
        if (GridView1.Rows.Count == 0)
        {
            Add_Button.Visible = false;
        }
        else
        {
            Add_Button.Visible = true;
        }

    }

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        // Insert data if the CommandName == "Insert" 
        // and the validation controls indicate valid data... 
        if (e.CommandName == "Insert" && Page.IsValid)
        {
            // Insert new record... 
            SqlDataSource1.Insert();
        }
    }

    protected void InsertButton_Click(object sender, EventArgs e)
    {
        // Programmatically reference Web controls in the inserting interface... 
        TextBox insertModelName = (TextBox)GridView1.FooterRow.FindControl("insertModelName");
        TextBox insertOS = (TextBox)GridView1.FooterRow.FindControl("insertOS");
        TextBox insertRAM = (TextBox)GridView1.FooterRow.FindControl("insertRAM");
        TextBox insertHDD = (TextBox)GridView1.FooterRow.FindControl("insertHDD");
        TextBox insertUnusedHDD = (TextBox)GridView1.FooterRow.FindControl("insertUnusedHDD");
        TextBox insertServiceTag = (TextBox)GridView1.FooterRow.FindControl("insertServiceTag");
        TextBox insertAdminUname = (TextBox)GridView1.FooterRow.FindControl("insertAdminUname");
        TextBox insertAdminPword = (TextBox)GridView1.FooterRow.FindControl("insertAdminPword");
        TextBox insertGateway = (TextBox)GridView1.FooterRow.FindControl("insertGateway");
        TextBox insertDate = (TextBox)GridView1.FooterRow.FindControl("insertDate");
        DropDownList LocationDDL = (DropDownList)GridView1.FooterRow.FindControl("LocationDDL");
        DropDownList ddlUserID = (DropDownList)GridView1.FooterRow.FindControl("ddlUserID");
        DropDownList DropDownList2 = (DropDownList)GridView1.FooterRow.FindControl("DropDownList2");
        DropDownList ddlMaintenance = (DropDownList)GridView1.FooterRow.FindControl("ddlMaintenance");
        TextBox insertWstationName = (TextBox)GridView1.FooterRow.FindControl("insertWstationName");
        // Set the SQLDataSource's InsertParameters values...             
        SqlDataSource1.InsertParameters["Model_Name"].DefaultValue = insertModelName.Text;
        SqlDataSource1.InsertParameters["Operating_System"].DefaultValue = insertOS.Text;
        SqlDataSource1.InsertParameters["RAM"].DefaultValue = insertRAM.Text;
        SqlDataSource1.InsertParameters["HDD_Size"].DefaultValue = insertHDD.Text;
        SqlDataSource1.InsertParameters["Unused_HDDspace"].DefaultValue = insertUnusedHDD.Text;
        SqlDataSource1.InsertParameters["Service_Tag"].DefaultValue = insertServiceTag.Text;
        SqlDataSource1.InsertParameters["Admin_Username"].DefaultValue = insertAdminUname.Text;
        SqlDataSource1.InsertParameters["Admin_Password"].DefaultValue = insertAdminPword.Text;
        SqlDataSource1.InsertParameters["Gateway"].DefaultValue = insertGateway.Text;
        SqlDataSource1.InsertParameters["Date_Last_verified"].DefaultValue = insertDate.Text;
        SqlDataSource1.InsertParameters["Location_ID"].DefaultValue = LocationDDL.SelectedValue;
        SqlDataSource1.InsertParameters["User_ID"].DefaultValue = ddlUserID.SelectedValue;
        SqlDataSource1.InsertParameters["Dept_ID"].DefaultValue = DropDownList2.SelectedValue;
        SqlDataSource1.InsertParameters["Maintenance_ID"].DefaultValue = ddlMaintenance.SelectedValue;
        SqlDataSource1.InsertParameters["Workstation_Name"].DefaultValue = insertWstationName.Text;
    }

    protected void Add_Button_Click(object sender, EventArgs e)
    {
        if (GridView1.FooterRow.Visible == false)
        {
            GridView1.FooterRow.Visible = true;
            Add_Button.Text = "Cancel";
        }
        else
        {
            GridView1.FooterRow.Visible = false;
            Add_Button.Text = "Add New Record";
        }
    }

    protected void MaintainedChkBx_CheckedChanged(object sender, EventArgs e)
    {
        GridViewRow r = GridView1.Rows[GridView1.SelectedIndex];
        string mid = ((Label)r.FindControl("Label14")).Text;
        if (MaintainedChkBx.Checked == true)
        {
            insrtMaintInfolbl.Visible = true;
            dateLbl.Visible = true;
            notesLbl.Visible = true;
            maintDate.Visible = true;
            notesTxtArea.Visible = true;
            statusChkBx.Visible = true;
            InsrtBtn.Visible = true;
            MaintenanceTable.Visible = true;
            if (mid == "")
            {
                MaintDataSource.SelectCommand = "Select * From Maintenance";
                MaintDataSource.DataBind();
            }
            else
            {
                Convert.ToInt32(mid);
                MaintDataSource.SelectCommand = "Select * From Maintenance Where Maintenance_ID=" + mid;
                MaintDataSource.DataBind();
            }
        }
        else
        {
            insrtMaintInfolbl.Visible = false;
            dateLbl.Visible = false;
            notesLbl.Visible = false;
            maintDate.Visible = false;
            notesTxtArea.Visible = false;
            statusChkBx.Visible = false;
            InsrtBtn.Visible = false;
            MaintenanceTable.Visible = false;
        }
    }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        MaintainedChkBx.Visible = true;
        MaintainedChkBx.Checked = false;
        GridView1.SelectedIndex = -1;
        insrtMaintInfolbl.Visible = false;
        dateLbl.Visible = false;
        notesLbl.Visible = false;
        maintDate.Visible = false;
        notesTxtArea.Visible = false;
        statusChkBx.Visible = false;
        InsrtBtn.Visible = false;
        MaintenanceTable.Visible = false;
    }

    protected void InsrtBtn_Click(object sender, EventArgs e)
    {
        string dte = maintDate.SelectedDate.ToString("d");
        string notes = Request.Form["notesTxtArea"];
        int chk;

        if (statusChkBx.Checked == true)
        {
            chk = 1;
        }
        else
        {
            chk = 0;
        }


        string query = "INSERT INTO Maintenance (Status, Date, Notes) " +
                        "VALUES (" + chk + ", '" + dte + "', '" + notes + "')";
        MaintDataSource.InsertCommand = query;
        MaintDataSource.Insert();
    }

    protected void DeslctBtn_Click(object sender, EventArgs e)
    {
        MaintainedChkBx.Visible = false;
        MaintainedChkBx.Checked = false;
        GridView1.SelectedIndex = -1;
        insrtMaintInfolbl.Visible = false;
        dateLbl.Visible = false;
        notesLbl.Visible = false;
        maintDate.Visible = false;
        notesTxtArea.Visible = false;
        statusChkBx.Visible = false;
        InsrtBtn.Visible = false;
        MaintenanceTable.Visible = false;
    }


}

}

GridView1.SelectedIndex = -1;

这一直在我的 SelectedIndexChanged 活动中。这导致了问题并且不允许我 select GridView 中的行。