我正在寻找一种方法来模仿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,再放入一个中继站,所述用户控件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top