仅显示复选框列表中最后选定的项目
本文关键字:项目 最后 显示 复选框 列表 | 更新日期: 2023-09-27 18:00:20
我正在尝试数据绑定CheckBoxList,但只选择了最后一项。
ASPX:
<asp:CheckBoxList ID="CityCheckBoxList" runat="server"
DataSourceID="SqlDS1" DataTextField="City"
DataValueField="CityID" AutoPostBack="True">
</asp:CheckBoxList>
<asp:SqlDataSource ID="SqlDS1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
代码背后:
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
EmployeeIdTextBox.Text = sdr["EmployeeID"].ToString();
EmployeeNameTextBox.Text = sdr["EmployeeName"].ToString();
CityCheckBoxList.DataBind();
ListItem currentCheckBox = CityCheckBoxList.Items.FindByValue(sdr["CityID"].ToString());
if (currentCheckBox != null)
{
currentCheckBox.Selected = true;
}
}
}
如果员工属于多个城市,则在CityCheckBoxList中只显示最后一个已选中的城市。我做错了什么?
我认为这是因为您正在将CityCheckBoxList
绑定到数据库中的每个员工身上。复选框的数据绑定应移动到循环之外。试试这个:
using (SqlDataReader sdr = cmd.ExecuteReader())
{
CityCheckBoxList.DataBind();
while (sdr.Read())
{
EmployeeIdTextBox.Text = sdr["EmployeeID"].ToString();
EmployeeNameTextBox.Text = sdr["EmployeeName"].ToString();
ListItem currentCheckBox = CityCheckBoxList.Items.FindByValue(sdr["CityID"].ToString());
if (currentCheckBox != null)
{
currentCheckBox.Selected = true;
}
}
}