gpt4 book ai didi

c# - 如何手动将项目添加到 Repeater 控件

转载 作者:太空狗 更新时间:2023-10-30 00:58:49 26 4
gpt4 key购买 nike

首先:

  • _ddlOptions 是下拉列表
  • _selectedOptions 是转发器控件

这只是我最终控制的临时代码。

我想做的是在 !IsPostBack 上获取 _ddlOption 的数据。添加按钮使用户能够将选定的下拉项移动到转发器控件。

下面更新Repeater.Items的方式是否正确?我找到了许多使用 DataSource 手动添加/删除元素的解决方案,但这里我的 DataSource 为空,因为我只在 !IsPostBack 上设置了它。

    protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
_ddlOptions.DataSource = new[] { 1, 2, 3 };
_ddlOptions.DataBind();
}
}

protected void OnAdd(object sender, EventArgs e)
{
var list = new ArrayList(_selectedOptions.Items);
list.Add(_ddlOptions.SelectedItem);
_ddlOptions.Items.RemoveAt(_ddlOptions.SelectedIndex);
_selectedOptions.DataSource = list;
_selectedOptions.DataBind();
}

最佳答案

如果您只需要获取一次数据并且您打算使用 View 状态,请在您需要时第一次获取数据,将其存储在 VS 中并从 VS 获取它以用于所有 future 的 PostBacks。

例子:

public List<int> Data
{
get
{
if (ViewState["Data"] == null)
{
// Get your data, save it and return it.
var data = new List<int> { 1, 2, 3 };
ViewState["Data"] = data;
return data;
}
return (List<int>)ViewState["Data"];
}
set
{
ViewState["Data"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData(Data);
}
}

private void BindData(List<int> data)
{
_ddlOptions.DataSource = data;
_ddlOptions.DataBind();
}

protected void OnAdd(object sender, EventArgs e)
{
var existing = Data;

existing.Add(_ddlOptions.SelectedItem);
_ddlOptions.Items.RemoveAt(_ddlOptions.SelectedIndex);

Data = existing;
BindData(existing);
}

我没有对此进行测试 - 这只是我的第一个想法,但您可以从这里开始构建。

帕特里克。

关于c# - 如何手动将项目添加到 Repeater 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2163040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com