dropdownlists的ASP.net列表 - 类似访问连续形式
-
11-09-2019 - |
题
我正在寻找一种方法来模仿asp.net中的MS接入式连续形式。在一个特定的情况下,我想控制,绑定到返回的每一行下拉列表,绑定到数据源中的值的数据源。任何dropdownlists'的任何改变将执行更新即刻数据库。
我有一半以实现这一使用中继器控制,与Repeater.ItemDataBound事件内分配DropDownList.SelectedValue。
但现在,假如我的OnSelectedIndexChanged事件添加到DropDownList的 - 我怎么会再查询中继知道我是哪个行的(获得主键的值,例如)
我不知道这很容易做到..所以,问题是我应该真的会做什么?我不想使用需要我一个GridView选择要编辑的行..我只是想有dropdownlists自动回任何更新。
希望这是清楚了吗?!
干杯! :d
解决方案
有关实施例起见,让我们说我们结合的自定义类称为Record
public class Record
{
public int Id;
public string Value;
}
如果你把自定义逻辑上Repeater.OnItemCreated事件您可以将主键连接到下拉列表的id
protected void Repeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (!(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem))
return;
var dataItem = e.Item.DataItem as Record;
if (dataItem == null) return;
var dropdown = e.Item.FindControl("myDropDown") as DropDownList;
if (dropdown == null) return;
dropdown.ID = dropdown.ID + dataItem.Id;
}
然后在SelectedIndexChange,你可以拉号关触发事件的下拉列表中。
protected void SelectedIndexChanged(object sender, EventArgs e)
{
var dropdown = sender as DropDownList;
if (dropdown == null) return;
var stringId = dropdown.ID.Replace("myDropDown", "");
int id;
if (Int32.TryParse(stringId, out id))
{
updateRecord(id, dropdown.SelectedValue);
}
}
这是非常丑陋破解,但它应该让你做你想做的。
其他提示
要解决这个最简单的方法是模仿连续访问ASP.NET窗体风格。这将是使一个用户控件来处理行级UI,再放入一个中继站,所述用户控件。
不隶属于 StackOverflow