在aspx页面中,我有一个Listview,每行都有一个选择按钮。单击选择按钮时,它会选择该行,但它始终从列表视图中的最后一行获取数据,而不是Im选择的那一行。
controlid是GetDeadline方法的一个参数,它调用存储过程来选择controlid列等于controlid参数的行。
protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{
try
{
foreach (ListViewItem item in ListView1.Items)
{
Label mylabel = (Label)item.FindControl("ControlIDLabel");
Session["controlid"] = mylabel.Text;
}
controlid = Session["controlid"].ToString();
Deadline newdeadline = Deadline.GetDeadline(controlid);
Bind();
}
catch (Exception ex)
{
lblStatus.Text = ex.Message;
}
}
还有我的意思的另一个例子:
ControlID | Name |
---------------------------------
1 Row One Select
2 Row Two Select
3 Row Three Select
4 Row Four Select
无论我选择哪一行,mylabel.Text =" 4"。
如何从正确的行获取数据?
答案 0 :(得分:0)
您必须获取所选项目,并在此项目中找到您的标签。如果您在循环foreach中搜索标签,则始终将Session["controlid"]
最后一个标签文本设置为值。尝试使用此代码。
您可以在此处找到有关ListView.SelectedIndexChanging Event
的更多信息protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{
try
{
ListViewItem item = (ListViewItem)ProductsListView.Items[e.NewSelectedIndex];
Label mylabel = (Label)item.FindControl("ControlIDLabel");
Session["controlid"] = mylabel.Text;
controlid = Session["controlid"].ToString();
Deadline newdeadline = Deadline.GetDeadline(controlid);
Bind();
}
catch (Exception ex)
{
lblStatus.Text = ex.Message;
}
}