ASP.Net C#Gridview复选框问题

ASP.Net C#Gridview复选框问题,c#,asp.net,gridview,C#,Asp.net,Gridview,我正在使用asp.net和c#创建一个web应用程序。我正在使用gridview显示数据库中的员工列表。我添加了一个复选框,以便用户可以选择他们希望挑选的员工。但是,当我去检查用户单击的位置时,所有复选框都显示为未选中。 这是我的代码: <asp:GridView runat="server" id="gvPickStaff" GridLines="Horizontal" AutoGenerateColumns="false"> <

我正在使用asp.net和c#创建一个web应用程序。我正在使用gridview显示数据库中的员工列表。我添加了一个复选框,以便用户可以选择他们希望挑选的员工。但是,当我去检查用户单击的位置时,所有复选框都显示为未选中。 这是我的代码:

    <asp:GridView runat="server" id="gvPickStaff" GridLines="Horizontal" AutoGenerateColumns="false">
                    <Columns>
                        <asp:BoundField DataField="idusers" HeaderText="ID  " ReadOnly="true" />
                        <asp:BoundField DataField="first_name" HeaderText="Name " ReadOnly="true" />
                        <asp:BoundField DataField="job_title" HeaderText="Job Title     " ReadOnly="true" />
                        <asp:BoundField DataField="code_quality" HeaderText="Code Quality" ReadOnly="true" />
                        <asp:BoundField DataField="time_bonus" HeaderText="Time Bonus" ReadOnly="true" />
                        <asp:BoundField DataField="analysis_of_requirements" HeaderText="Analysis Of Requierements" ReadOnly="true" />
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:CheckBox ID="cbxSelect" runat="server" Checked="true" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
我这样填充gridview:

    protected void fillStaffChoiceList()
    {
        string strConnection = ConfigurationSettings.AppSettings["ConnectionString"];
        MySqlConnection connection = new MySqlConnection(strConnection);
        MySqlCommand command = connection.CreateCommand();
        MySqlDataReader reader;
        command.CommandText = "SELECT idusers, first_name, job_title, code_quality, time_bonus,analysis_of_requirements FROM `test`.`users` WHERE security_level > 1";
        //SELECT idusers, first_name, last_name, job_title, code_quality, time_bonus,analysis_of_requirements FROM `test`.`users` WHERE security_level > 1;
        connection.Open();

        reader = command.ExecuteReader();

        gvPickStaff.DataSource = reader;
        gvPickStaff.DataBind();

        connection.Close();
    }
也许有人能看出我错在哪里吗

(rowitem.Cells[6].FindControl("cbxSelect")`

我猜你在错误的单元格中查找复选框。你没有在复选框上得到一个例外吗?它不应该在单元格0中可用。

这是一个可以使用的示例

((复选框)gvPickStaff.Rows[i].FindControl(“cbxSelect”)。选中


我希望这也能有所帮助,因为这会使它显式地成为一个复选框,从而能够按预期返回。

在复选框中使用此选项:

<input type="checkbox" name="chk1" id="chk1" value='<%# Eval("idusers") %>' />

它将返回所有用逗号(,)分隔的数据,我认为问题在于页面加载

试试这个

public void Page_Load(object sender,EventArgs e)
{

if(!IsPostBack)
{
fillStaffChoiceList();

}

}

不,我一点也没出错。我试着把它改成你建议的,但还是每个复选框都是假的。还有其他建议吗?这与chk=(复选框)(rowitem.Cells[6].FindControl(“cbxSelect”))不一样吗;我把它作为一个复选框放在那里,但问题是它们都返回为未选中。如果您已经在使用FindControl方法,为什么要使用cell?首先,所有复选框都是未选中的,在什么时候调用
fillStaffChoiceList()
?如果您在Page_Load中调用它,而没有使用
If(!IsPostBack)
,那么它将重新绑定并在您点击按钮单击处理程序之前丢失您的复选框状态。这就是问题所在。感谢万分之一-我不确定其他答案都是关于什么的!:)
request("chk1");
public void Page_Load(object sender,EventArgs e)
{

if(!IsPostBack)
{
fillStaffChoiceList();

}

}