带有数据绑定复选框的列表视图
本文关键字:列表 视图 复选框 数据绑定 | 更新日期: 2023-09-27 18:22:00
我一直在努力获取带有1复选框的列表视图。复选框有一个项目模板来显示datakey值或Text值。
<ItemTemplate>
<asp:CheckBox ID="chkPreferences" runat="server" Text='<%#Eval ("DESCRIPTION") %>' />
</ItemTemplate>
我在列表视图中将datakeynames属性设置为PreferenceID
然后在我后面的代码中,我用这个代码绑定listvie
if (Session["IDValue"] != null)
{
int gen = Convert.ToInt32(Session["IDValue"]);
lstPreferences.DataSource = mdb.GetPreferences(gen);
lstPreferences.DataBind();
}
然后我在点击事件中添加了一个按钮到该页面。
if (lstPreferences.Items.Count > 0)
{
for (int i = 0; i < lstPreferences.Items.Count; i++)
{
CheckBox listChecked = (CheckBox)lstPreferences.Items[i].FindControl("chkPreferences");
if (listChecked.Checked)
{
LabelResult.Text = listChecked.Text;
}
}
}
基本上,我现在正试图让每个复选框的复选值都被选中,并将其显示在标签中。我已经搜索了很多有这个问题的人,并试图用几种不同的方式重组代码,但最终我似乎无法弄清楚我做错了什么。此外,当我将listChecked.Checked时,它甚至无法识别复选框是否已选中。
感谢
听起来你需要获取数据绑定代码,并确保它只在初始页面加载时触发(而不是在回发时)。否则,在单击事件有机会触发之前,您将使用数据库中的原始数据重新加载ListView。
像这样的东西应该起作用:
If(!Page.IsPostBack)
{
if (Session["IDValue"] != null)
{
int gen = Convert.ToInt32(Session["IDValue"]);
lstPreferences.DataSource = mdb.GetPreferences(gen);
lstPreferences.DataBind();
}
}