gpt4 book ai didi

asp.net - 获取 ListView 中动态添加的控件的值

转载 作者:行者123 更新时间:2023-12-01 01:32:47 25 4
gpt4 key购买 nike

我无法在 ListView 中获取动态创建的控件的输入值。

这是我的 ListView :

<asp:ListView ID="lvQuestions" runat="server" DataKeyNames="ProductQuestionId" onitemdatabound="lvQuestions_ItemDataBound">
<LayoutTemplate>
<table>
<tr runat="server" id="itemPlaceholder"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("Question") %></td>
<td>
<asp:PlaceHolder ID="plControl" runat="server" />
<asp:HiddenField ID="hfQuestionId" runat="server" />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" />

在我的 ItemDataBound 处理程序中,我将 TextBox 或其他控件添加到占位符。控件类型取决于项目,但为了简单起见,我们假设它始终是一个文本框。控件的 ID 也是动态的。
// create a textbox control
TextBox txtbx = new TextBox();
txtbx.ID = "txtQuestion_" + productQuestionId.ToString(); //productQuestionId is the datakey value of this ListViewItem
placeholder.Controls.Add(txtbx);

当用户单击按钮时,我需要能够获取他们填写的值。

在我的研究中,我发现由于页面生命周期,我需要首先重新创建动态添加的控件才能获取它们的值。

这是我在按钮处理程序中重新创建控件的内容:
    foreach (ListViewDataItem item in lvQuestions.Items)
{
HiddenField hdField = (HiddenField)item.FindControl("hfQuestionId");
PlaceHolder plcHolder = (PlaceHolder)item.FindControl("plControl");
TextBox txtbx = new TextBox();
txtbx.ID = "txtQuestion_" + hdField.Value;
plcHolder.Controls.Add(txtbx);
}

然后在同一个处理程序中的下一个代码块我重新遍历 ListViewDataItems 并找到控件:
    foreach (ListViewDataItem item in lvQuestions.Items)
{
HiddenField hdField = (HiddenField)item.FindControl("hfQuestionId");
PlaceHolder plcHolder = (PlaceHolder)item.FindControl("plControl");
TextBox txtbx = (TextBox)plcHolder.FindControl("txtQuestion_" + hdField.Value);
if (txtbx != null)
{
Response.Write("TextBox Found:" + txtbx.Text);
}
}

找到文本框,但没有值。就像我刚刚在前一个 block 中用新的文本框覆盖了文本框。如果我删除前一个代码块,则找不到任何文本框。

有人可以帮我解决我在这里缺少的东西吗?

谢谢你。

最佳答案

正如您已经发现的那样,这是一个生命周期问题。尝试在 ListView.ItemCreated 中创建动态控件事件而不是 ListView.ItemDataBound 事件。

关于asp.net - 获取 ListView 中动态添加的控件的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731141/

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