- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在用户控件中,我在 UpdatePanel 内有一个 Repeater(其 ID 显示在 ModalPopupExtender 内。Repeater 使用 MyDTO 对象的数组列表进行数据绑定(bind)。列表中的每个 Item 都有两个按钮。绑定(bind)后ImageURL 和 CommandArgument 已设置。
此代码第一次运行良好,但此后 CommandArgument 错误。似乎显示已正确更新,但 DTO 未正确更新,并且发送的 CommandArgument 是刚刚删除的。
任何人都可以发现代码的任何问题吗?
编辑:我刚刚在代码中添加了一个 CollapsiblePanelExtender。当我现在删除一个项目并展开面板时,之前删除(并从显示中消失)的项目又回来了。似乎中继器没有在引擎盖下正确重建。
澳交所
<asp:UpdatePanel ID="ViewDataDetail" runat="server" ChildrenAsTriggers="true">
<Triggers>
<asp:PostBackTrigger ControlID="ViewDataCloseButton" />
<asp:AsyncPostBackTrigger ControlID="DataRepeater" />
</Triggers>
<ContentTemplate>
<table width="100%" id="DataResults">
<asp:Repeater ID="DataRepeater" runat="server" OnItemCommand="DataRepeater_ItemCommand" OnItemDataBound="DataRepeater_ItemDataBound">
<HeaderTemplate>
<tr>
<th><b>Name</b></th>
<th><b> </b></th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<b><%#((MyDTO)Container.DataItem).Name%></b>
</td>
<td>
<asp:ImageButton CausesValidation="false" ID="DeleteData" CommandName="Delete" runat="server" />
<asp:ImageButton CausesValidation="false" ID="RunData" CommandName="Run" runat="server" />
</td>
</tr>
<tr>
<td colspan="2">
<table>
<tr>
<td>Description : </td>
<td><%#((MyDTO)Container.DataItem).Description%></td>
</tr>
<tr>
<td>Search Text : </td>
<td><%#((MyDTO)Container.DataItem).Text%></td>
</tr>
</table>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</ContentTemplate>
</asp:UpdatePanel>
public DeleteData DeleteDataDelegate;
public RetrieveData PopulateDataDelegate;
public delegate ArrayList RetrieveData();
public delegate void DeleteData(String sData);
protected void Page_Load(object sender, EventArgs e)
{
//load the initial data..
if (!Page.IsPostBack)
{
if (PopulateDataDelegate != null)
{
this.DataRepeater.DataSource = this.PopulateDataDelegate();
this.DataRepeater.DataBind();
}
}
}
protected void DataRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
if (DeleteDataDelegate != null)
{
DeleteDataDelegate((String)e.CommandArgument);
BindDataToRepeater();
}
}
else if (e.CommandName == "Run")
{
String sRunning = (String)e.CommandArgument;
this.ViewDataModalPopupExtender.Hide();
}
}
protected void DataRepeater_ItemDataBound(object source, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if (item != null && item.DataItem != null)
{
MyDTO oQuery = (MyDTO)item.DataItem;
ImageButton oDeleteControl = (ImageButton) item.FindControl("DeleteData");
ImageButton oRunControl = (ImageButton)item.FindControl("RunData");
if (oDeleteControl != null && oRunControl !=null)
{
oRunControl.ImageUrl = "button_expand.gif";
oRunControl.CommandArgument = "MyID";
if (oQuery !=null)
{
//do something
}
oDeleteControl.ImageUrl = "btn_remove.gif";
oDeleteControl.CommandArgument = "MyID";
}
}
}
public void BindDataToRepeater()
{
this.DataRepeater.DataSource = this.PopulateDataDelegate();
this.DataRepeater.DataBind();
}
public void ShowModal(object sender, EventArgs e)
{
BindDataToRepeater();
this.ViewDataModalPopupExtender.Show();
}
最佳答案
感谢您提醒我为什么停止使用 ASP.NET 控件。这正是使太多项目超出预算和进度的噩梦的确切类型。
我对您的建议是考虑实现这一点的最简单方法。您可以尝试向后弯腰,以使其以 ASP.NET 方式工作或采用最短路线。
您所做的只是生成 HTML,它应该永远不会那么困难。
问题的最可能原因是 ViewState 存储在未在部分回发时更新的页面中。因此,随着更新面板中的每次更改,您都会回发页面的初始 View 状态。
尝试用一个简单的 for 循环替换中继器(忽略那些开始提示你不应该混合标记和代码的人)。将您的数据绑定(bind)语句替换为 <%= %>
.
这消除了所有的 View 状态,并且应该从重新出现中删除任何已删除的行。
关于asp.net - UpdatePanel、Repeater、DataBinding 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008644/
我在 asp.net 页面中有一些更新面板。我希望 updatepanel 2 在 updatepanel 1 刷新时刷新,但 UpdatePanel 2 的 UpdateMode 属性设置为 Con
我的 ajax 页面上有两个更新面板。这是我第一次使用 updatepanel,我不知道出了什么问题。我认为只有 btnFilter 的 Click 事件必须触发第二个更新面板的内容,但更改组合值(也
如果有 UpdatePanel在另一个 UpdatePanel ,并且在内部的UpdatePanel 中有一个按钮,我想点击这个按钮时,只刷新内部UpdatePanel .如何 ? 最佳答案 在inn
我正在将 ASP.NET 应用程序从 3.5SP1 移植到 4.0。该应用程序在 3.5SP1 中完美运行。在 4.0 中,我发现 UpdatePanel 行为有所不同。 我们有一个简单的用户控件,其
我已经复制并粘贴了这个警报类: http://madskristensen.net/post/JavaScript-AlertShow%28e2809dmessagee2809d%29-from-AS
我正在使用 C# 的 ASP .NET 4.0。我有一个 Web 表单,其中所有布局都存在于 UpdatePanel 中。里面有以下内容: 用于通过文本框和搜索按钮输入搜索条件的面板 使用动画 .gi
我需要在 UpdatePanel upSectionB 中添加 LinkButton btnAddRow 但问题是我在加载期间遇到此错误: A control with ID 'btnAddRow
我有一个带有 Ajax 选项卡控件的页面,其中一个选项卡中有一个 Web 控件,它是 Telerik RadGrid,其中编辑表单指向另一个 Web 控件。该编辑表单还包含 Ajax 选项卡,并且在其
我有一个带有一些复选框的 UpdatePanel。我检查它们,然后点击我的保存按钮,但这会导致 UpdatePanel 回发(刷新)并将它们全部设置回空白。重绘方法在按钮代码之前运行。 拥有可以操作的
我有很多地方......构造就在它所作用的元素之后进行(以确保在显示 HTML 之前立即对其进行处理)。一切正常。 现在我开始使用asp:UpdatePanel和一些标签在里面。我设置Visible=
我在使用 UpdatePanels 的同一个 asp.net 页面上有这个函数 $(function() { $("#listTimeInput").change(function() {
我有一个 UpdatePanel,用于替换页面内的内容。在 UpdatePanel 之外,我有一些 jQuery 使用 on() 函数来分配一些按钮点击。据我了解the new jQuery.on()
我已经将 Jquery 用于圆角(DIV),并且我有一个更新面板,其中包含一个数据列表,其中包含一些图像和一个删除链接。当我单击删除链接时,它会触发删除命令并删除图像。(异步回发)。问题是当我单击删除
考虑以下场景: MasterpageFile1: 嵌套母版页文件:
我目前正在尝试对位于 AJAX UpdatePanel 内的 GridView 使用“colResizable”。第一次加载时,它运行良好,但每当 UpdatePanel 更新时,它就会停止。 我知道
我只是想做空 this question's example通过制作一个简短的原型(prototype)来测试 UpdatePanel 功能,以禁用单击链接按钮时重新加载 ASP.NET 页面。我在像
我有一个相当复杂的 UI 页面,其中嵌套了多个 UpdatePanel。所有这些都设置为 UpdateMode = "Conditional" 我在所有更新面板之外都有一个列表框。奇怪的是,当单击 U
我正在阅读一篇显示 how bad CodePlex uses UpdatePanels 的文章以及 StackOverflow 在这个问题上有多好,例如,当用户赞成一个答案/问题时。 我想知道是否有
闲置 2 分钟后,在页面上呈现更新面板所需的时间大约是之前的 3 倍。我知道这可能是应用程序池设置的问题,但是有没有办法通过定期从页面与服务器联系来避免该问题? 最佳答案 你想做的是这样的 -> fu
我是一名优秀的程序员,十分优秀!