ASP.Net C# 网格视图复选框查询
本文关键字:复选框 查询 视图 网格 Net ASP | 更新日期: 2023-09-27 17:55:12
我正在使用 asp.net 和c#创建一个Web应用程序。我正在使用网格视图显示数据库中的员工列表。我添加了一个复选框,以便用户可以选择他们想要选择的员工。但是,当我去检查用户单击的位置时,所有复选框都显示为未单击。这是我的代码:
<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>
我发现问题的代码隐藏:
protected void btnAddStaff_OnClick(object sender, EventArgs e)
{
foreach(GridViewRow rowitem in gvPickStaff.Rows)
{
chk = (CheckBox)(rowitem.Cells[0].FindControl("cbxSelect"));
if(chk.Checked)
{
int staffid = Convert.ToInt32(gvPickStaff.DataKeys[rowitem.RowIndex]["idusers"]);
staffChosen.Add(staffid);
}
}
}
我像这样填充网格视图:
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();
}
谁能看出我哪里出了问题?
我认为问题出在页面加载上
试试这个
public void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
fillStaffChoiceList();
}
}
(rowitem.Cells[6].FindControl("cbxSelect")`
我猜您在错误的单元格中查找复选框。你没有在复选框上得到一个解释吗?它不应在单元格 0 中可用。
这是可以使用的示例。
((复选框)gvPickStaff.Rows[i].FindControl("cbxSelect")).检查
我希望这也可以帮助它明确地进入复选框,从而能够按预期返回。
在复选框中使用以下命令:
<input type="checkbox" name="chk1" id="chk1" value='<%# Eval("idusers") %>' />
当您想要选择的 id 时,请使用:
request("chk1");
它将返回所有用逗号(,)分隔检查的数据