【问题标题】:dynamically created listbox c#动态创建的列表框 c#
【发布时间】:2018-03-14 00:42:11
【问题描述】:

我必须创建多个listbox 并在它们动态创建时绑定它们。我创建了listbox,因为循环用于根据需要创建listbox 的数量

for(int i=0;i<requirement;i++)
{
  Listbox dynamiclistbox = new listbox();
  //then i bind it with a list<> 
  //then i add listbox to a panel
  panel.Controls.Add(dynamiclistbox);
}

我的问题是,当我单击提交按钮时,动态控件会随着 postback 上的动态控件松散状态而消失 有人可以帮我创建没有。 listbox 的动态和绑定也将它们绑定在同一个按钮单击上。并在postback 上获取listbox

即知道listbox上的选中项

【问题讨论】:

  • 您必须(重新)在每个 PostBack 上创建列表框。您必须将requirement 存储在某个地方,当有回发时,再次执行for-loop

标签: c# asp.net listbox


【解决方案1】:

您需要将代码放入Page_Load 事件中。如果它已经存在,那么您可能将它放在类似

之类的东西中
if (!Page.IsPostBack) {
    //Your code
}

如果是这种情况,那么您需要将您的代码放在if 之外,因为它仅在不是回发时添加控件,并且您还需要在回发时添加它们。

编辑:

当前控件是在单击按钮时创建的。建议有一个单独的函数来接收输入并生成控件,将它们添加到panel。从您的点击事件中调用此函数。如果这是正确的,请创建一个asp:HiddenField 并将其Value 设置为单击处理程序中所需的输入。在Page_Load 上,使用ValueHiddenField 调用您的函数。

【讨论】:

  • 感谢 Lajos 的回复,但列表框将在按钮单击时创建,我已成功创建列表框的数量,并且它们也绑定到列表。但问题是我希望列表框上的选定文本(动态创建的列表框)但回发列表框消失。
  • 感谢您的回答您的回答让我清楚地了解了动态控件的概念。我的错误只是我还在 (ispostback) 处再次创建了动态列表,而在 ispostback 中我找到了控制列表框。尽管发现它是我的保存按钮事件。
【解决方案2】:

!IsPostBack部分编写绑定代码

for(int i=0;i<requirement;i++)
{
  Listbox dynamiclistbox = new listbox();
          dynamiclistbox.CssClass = "";
          dynamiclistbox.ID = ""
          dynamiclistbox.EnableViewState = true;

  if (!IsPostBack){}

【讨论】:

  • 感谢您的回答,但我需要在单击按钮时创建动态列表框,所以我无法在 !ispostback 创建它,但现在我得到了上面的答案。但也感谢您的回答
猜你喜欢
  • 2012-06-18
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2016-06-16
  • 1970-01-01
相关资源
最近更新 更多