【问题标题】:button controls in user controls in ListView control as UpdatePanel Triggers in asp.netListView 控件中的用户控件中的按钮控件作为 asp.net 中的 UpdatePanel 触发器
【发布时间】:2015-11-06 12:54:22
【问题描述】:

这是我的场景..

  • 我的 ASP.NET 页面中有一个 ListView 控件。
  • 列表视图绑定到数据源。

  • 然后 ListView 的 Itemtemplate 使用用户控件 包括按钮。

  • ListView 嵌套在 UpdatePanel 中。

  • 我想将更新面板的触发器设置为 UC 的按钮。

我遇到了很多答案,但无法建立可行的解决方案。

UC 的标记

<div class="form-group">
        <asp:TextBox ID="txtAnswer" runat="server"></asp:TextBox>

    </div>
    <div class="form-group text-right">        
        <asp:LinkButton ID="btnUpdateAns" runat="server" OnClick="btnUpdateAns_Click">Update</asp:LinkButton>
        <asp:LinkButton ID="btnDelete" runat="server" OnClick="btnDelete_Click" OnClientClick="return confirm('Are you sure to delete the answer?')" CausesValidation="False">Delete</asp:LinkButton>
    </div>

UC 容器的标记

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:ListView ID="AnswerList" runat="server" DataSourceID="DS_Question">
    <ItemTemplate>
        <itstar:AnswerControl runat="server" ID="ansBox" propAnswerID='<%# Eval("AnswerID") %>' propQuestionID='<%# Eval("QuestionID") %>'/>
    </ItemTemplate>
    </asp:ListView>
</ContentTemplate>
<Triggers>

</Triggers>
</asp:UpdatePanel>

【问题讨论】:

  • 添加 aspx 标记会更有帮助。

标签: c# asp.net listview


【解决方案1】:

如果您的 Button 在 ListView 内,那么您可以在 Button Click on ListView RowDataBound 上为 updatepanel 设置 Asycronous 帖子

protected void AnswerList_ItemDataBound(object sender, ListViewItemEventArgs e) {
  LinkButton lb = e.Item.FindControl("btnUpdateAns") as LinkButton;
  toolscriptmanagerID.RegisterAsyncPostBackControl(lb);  // ToolkitScriptManager
}

如果您需要 Full Post Back,您可以 RegisterPostBack 进行控制。希望 link 在这种情况下为您提供帮助。

【讨论】:

  • 我在 listview itemDataBound 事件中使用了你的代码。似乎 FindControl 函数总是返回 null.
  • 您的 BtnUpdateAns 是否在 ListView AnswerList 中?
  • 是的。它位于 ListView > 用户控制 > btnUpdateAns。由于 ListView 绑定到 DataSource。页面上会有很多UC
  • 您能否使用 btnUpdateAns 更新更新面板和列表视图的标记代码?
  • 稍作调整后,我发现我必须使用LinkButton lb = e.Item.FindControl("ansBox").FindControl("btnUpdateAns") as LinkButton; 才能查询正确的按钮。更新问题现在解决了。但它适用于“删除”按钮。当一个项目被删除时,数据实际上被删除了。但它仍然保留在页面中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多