Gridview是用于显示和操作来自各种数据源的数据的控件。
当从网格视图中单击链接按钮时,我的更新面板的 UI 不会更新。我要更新的 Updatepanel 不在 gridview 内。这是我的代码: 当从网格视图中单击链接按钮时,我的更新面板的 UI 不会更新。我要更新的 Updatepanel 不在 gridview 内。这是我的代码: <asp:ScriptManager EnablePartialRendering="true" ID="ScriptManager1" runat="server"> </asp:ScriptManager> //<asp:GridView ID="attendanceGv" runat="server" CssClass="table table-striped table-bordered" AutoGenerateColumns="False" ShowHeader="False" OnRowDataBound="GridViewRowEventHandler" > // I tried this with regular onlick but it did not work. <asp:GridView ID="attendanceGv" runat="server" CssClass="table table-striped table-bordered" AutoGenerateColumns="False" ShowHeader="False" OnRowDataBound="GridViewRowEventHandler" OnRowCommand="GridView1_RowCommand"> <Columns> <asp:BoundField DataField="Field1" SortExpression="Field1" ItemStyle-Width="8%" /> <asp:TemplateField> <ItemTemplate> // <asp:LinkButton ID="expandLBtn" runat="server" OnClick="expandLBtn_Click"><i class="fa-solid fa-arrow-right"> </i></asp:LinkButton> // I tried this with the onclick command and trigger. (Also without the trigger) <asp:LinkButton ID="expandLBtn" runat="server" CommandName="UpdateTextBox" CommandArgument='<%# Eval("nyeis_id") %>' ><i class="fa-solid fa-arrow-right"> </i></asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> <ContentTemplate> <div class="row "> <div class=" col-12"> <asp:Label ID="Label2" CssClass="form-control" runat="server" Text="test1" Style="text-align: center;" Font-Bold="True" ></asp:Label> </div> </div> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="attendanceGv" EventName="RowCommand" /> // without this trigger, i kept getting regular post back. With this trigger I get Async but the UI does not update. //<%-- <asp:AsyncPostBackTrigger ControlID="expandLBtn" EventName="Click" />--%> // tried this with the regular click event. </Triggers> </asp:UpdatePanel> C#:这是我使用 onclick 时所做的 protected void expandLBtn_Click(object sender, EventArgs e) { GridViewRow row = (GridViewRow)((LinkButton)sender).NamingContainer; HtmlControl FlagAttendanceDetailsCol = (HtmlControl)attendanceDetailsCol.FindControl("attendanceDetailsCol"); UpdatePanel FlagUpdatePanel2 = (UpdatePanel)FlagAttendanceDetailsCol.FindControl("UpdatePanel2"); System.Web.UI.WebControls.Label FlagLabel2 = (System.Web.UI.WebControls.Label)FlagUpdatePanel2.FindControl("Label3"); FlagLabel2.Text="test"; Label2.Text = "New value2"; UpdatePanel2.Update(); } C#:这是我在使用 GridViewCommandEventArgs 时尝试的 if (e.CommandName == "UpdateTextBox") { int rowIndex = Convert.ToInt32(e.CommandArgument); LinkButton FlagExpandLBtn = attendanceGv.Rows[rowIndex].FindControl("expandLBtn") as System.Web.UI.WebControls.LinkButton; ScriptManager1.RegisterAsyncPostBackControl(FlagExpandLBtn); // Here, you can retrieve the data associated with the row that contains the clicked button and // perform any necessary data operations. System.Web.UI.WebControls.Label txtBox2 = UpdatePanel2.FindControl("Label2") as System.Web.UI.WebControls.Label; System.Web.UI.WebControls.Label txtBox3 = UpdatePanel2.FindControl("Label3") as System.Web.UI.WebControls.Label; if (txtBox2 != null) { txtBox2.Text = "test2"; // call the Update method on the UpdatePanel // Label2.Text = "New value"; // Update the TextBox in the other UpdatePanel. attendanceDetailsCol.Visible = true; } if (txtBox3 != null) { txtBox3.Text = "test3"; // call the Update method on the UpdatePanel // Label3.Text = "New value"; // Update the TextBox in the other UpdatePanel. attendanceDetailsCol.Visible = true; } string test = Label2.Text; string test2 = Label3.Text; UpdatePanel2.Update(); } 我尝试调试,没有收到任何错误,在进入 updatepanel2.update 部分之前,文本框显示它已更改,但它从未在 UI 中显示。 编辑:这可以工作! 问题当然是按钮和 gv 位于 up 的外部。 作为“正常”规则,您可以让页面上的任何按钮触发更新面板。 但是,在网格视图内部?不,因为更新面板需要这个: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table" Width="60%" ShowHeaderWhenEmpty="true"> <Columns> <asp:BoundField DataField="FirstName" HeaderText="FirstName" HtmlEncode="false" /> <asp:BoundField DataField="LastName" HeaderText="LastName" HtmlEncode="false" /> <asp:BoundField DataField="HotelName" HeaderText="HotelName" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="Province" HeaderText="Province" /> <asp:BoundField DataField="Description" HeaderText="Description" /> <asp:TemplateField> <ItemTemplate> <asp:Button ID="Button1" runat="server" Text="This row" OnClick="Button1_Click" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <h3>Inside up <%= DateTime.Now.ToString() %></h3> Row click = <asp:TextBox ID="txtRowClick" runat="server"></asp:TextBox> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="onclick" /> </Triggers> </asp:UpdatePanel> 注意 ControlID 的设置。好吧,如果触发按钮不在 gv 内部,那就可以了。 有多种方法,但如果你的GV只有那个按钮,还是其他几个按钮? 然后您可以将整个 GridView 定义为触发器。 然后这就会起作用: <Triggers> <asp:AsyncPostBackTrigger ControlID="Gridview1" /> </Triggers> 所以,你说触发器是整个GV,而你没有指定事件。 所以,下一期,发帖者没有明确说明链接按钮点击是否有效? 以下是解决方案: 另一条可能的路 将 GV 也放入更新面板中。 当您执行此操作时,该页面上的所有面板都将发布到服务器。因此,理论上,您所需要的只是 GV 中的一个工作按钮。如果您将 GV 放置在同一个更新面板中,甚至是单独的更新面板中,那么这将再次起作用,因为默认情况下所有更新面板都会发布回服务器。结果是后面的代码可以使用、修改任何这些控件中的任何控件。 但是,下面的叙述仍然有帮助,因为我经常看到链接按钮不起作用,下面解释了此问题的解决方法: 首先,尝试转储命令名称的使用。 只需为expandLBtn按钮添加一个onclick事件(它是一个链接按钮,但你仍然可以有一个onclick事件)。 因此,按钮(链接按钮)将如下所示: <ItemTemplate> <asp:LinkButton ID="expandLBtn" runat="server" CommandArgument='<%# Eval("nyeis_id") %>' OnClick="expandLBtn_Click" > <i class="fa-solid fa-arrow-right"></i></asp:LinkButton> </ItemTemplate> 但是,还有一个大问题: 由于某种原因,我发现如果您为引导图标添加“span”或“i”(或者在您的情况下为 Font Awesome),则当放置整个 GridView (或 ListView)时,单击事件开始不起作用更新面板内部。 我无法确定为什么会这样。 (但是,带有图标的跨度的存在是失败的原因。 那么,要验证以上内容吗?尝试使用普通按钮(同样不带命令名称,但您可以自由使用命令参数)。 事实上,首先尝试在没有 commandName 的情况下 - 以及链接按钮的指定单击事件。 如上所述,甚至您现有的链接按钮?删除跨度或“i”,删除 commandName,保留命令参数,然后使用该单击事件 + 命名容器来选取当前行单击。 当您嵌套多个 gv,然后将整个交易放入更新面板时,我往往只会看到此错误/问题。 所以,如果您发现链接按钮可以工作(没有图标),那么: 你必须采用一个按钮 - 我只是没有更好的答案。 您还可以使用图像按钮(大概还有一个图标)。 您还可以说出您拥有的 1 个或 2 个图标吗? 前往: https://fontawesome.com/search?s=solid&f=sharp&o=r 现在,选择图标,您就有机会将该图标下载为“图像”(SVG) 文件。 然后您可以像这样设置常规按钮的样式: <style type="text/css"> .bEdit { border: 1px solid #563d7c; border-radius: 5px; color: white; padding: 5px 10px 5px 25px; background: url(Content/Icons/pencil-square.svg) left 3px top 5px no-repeat skyblue; } </style> 然后你的按钮就变成这样了: <asp:Button ID="cmdEdit3" runat="server" Text="Edit" CssClass="btn bEdit" OnClick="cmdEdit3_Click" /> 如果您想要按钮中的图标+文本,请使用上面的内容。 如果您只想/需要按钮中的图标? 然后当然使用基于该 SVG 的图像按钮。 这样说: <asp:ImageButton ID="cmdDelete" runat="server" CssClass="btn btn-default" ImageUrl="~/Content/Icons/trash.svg" /> 因此,上述更好的选择取决于您是否只需要图标,或图标+文本。 如果您只需要图标?然后使用图像按钮 + SVG 图标。 这里建议的解决方案: 仅当您有嵌套的 GridView(或 ListView)时才需要。 仅当整个混乱都在更新面板中时才需要。 如果您没有将该 GridView 嵌套在另一个 GridView 中,那么一切都会正常工作,并且实际上无需更新面板即可正常工作。 我能体验到什么? 插入图标的“span”或“i”是导致失败的原因。您可以作为测试保留现有代码,并删除图标,然后查看按钮是否适合您。 (很可能会)。 所以,要么: 采用普通按钮+样式表来显示SVG图标。 (如果您需要/想要图标+文本,请执行此操作) 采用图像按钮,指定图像 - 这同样可以工作。 (这个建议是当你只想要图标时)。 但是,由于您当前的示例在 GridView 中没有嵌套的 GridView? 然后对该链接按钮使用普通的单击事件应该可以工作。 (删除命令名称)。
使用中继器问题/问题时使用 GridView EventHandler
我想在 GridView 渲染之前运行一些代码,理想情况下,尽管我可以在 RowCreated 或 RowDataBound 事件中执行此操作。 我的问题是我正在使用
如何在按钮单击时绑定gridview,因为空网格在回发时绑定
我已经使用gridview,并且根据某些条件在运行时删除列,并且在按钮单击事件上我通过填充数据表来绑定gridview,但它显示为空...
根据 SQL Server VB.NET 中存储过程的结果隐藏 Gridview 行
我在 SQL Server 中有一个存储过程,用于检查想要查看我的 gridview 的用户的权限。 如果他们有权限,该过程返回 1;如果没有,则返回 0。 我想展示
后面代码中ScriptManager.RegisterStartupScript确认框的返回值
ImageButton 上有两个确认框 - 第一个是常规确认框,显示“您确定要删除它吗?” (即来自客户端的 OnClientClick 事件)。如果选择“是”,则...
在c#和ASP.Net中检查GridView中的CheckBox是否被选中
我需要检查 GridView 中的复选框在 c# 和 ASP.Net 中是否被选中,并检查我的 gridview 中的所有复选框是否都被选中,有些被选中,有些没有,根据
我有两个Gridview来显示壁纸,一个用于图像壁纸,一个用于纯色壁纸。 现在我想有条件地将两个 Gridview 与一个“WallpaperCollection”绑定(续...
我使用 DevExpress v10.2.3 将 GridView 与 asp.net MVC 4 分组。我可以从数据库获取数据并显示它们。 但我无法改变任何约束。例如:按列排序。当我点击排序时,我得到
我正在尝试过滤关系数据列。 在我的搜索模型中,我添加了该字段 公共函数属性() { // 将相关字段添加到可搜索属性中 返回数组...
使用分页和 JavaScript 链接时如何从 ASP.NET 网站上抓取信息?
我收到了一份员工名单,该名单应该是最新的,但它与用 ASP.NET 编写的 Intranet People Finder 不匹配。 由于信息敏感,我无法访问...
我有普通的 ModelSearch 和 ActiveDataProvider,我想添加一个虚拟/相关属性来在 gridview 中排序。如果我使用 setSort,并且添加这个唯一的属性,那么所有
在 GridView.count 中使用时文本字段的高度会中断
我使用 SingleChildScrollView 和 Column 渲染一些小部件。因为该应用程序可以在多个维度上运行,所以我有时想成对渲染小部件,例如每个 ot 旁边的每个 2 个文本字段...
我有一个通用页面滚动 SingleChildScrollView 和一个产品(电影)滚动 GridView.builder 但他们不一起工作 [ 屏幕无法正确滚动 但如果去掉高度
如何使用ASP.net GridView将数据属性放入TR标签中?
我有一个带有 GridView 的 ASP.net 页面。 GridView 有许多行,每行都有一个关联的 ID 号。 我想让 ASP.net 输出类似 ...<...
我有一个由 Yii2 GridView 渲染的表格。表头包含按日期排序的链接。如果我单击它,它首先按升序对表格进行排序,第二次单击时按降序排序...
我有两个网格视图,每个网格视图都有自己的表格。 我试图做到这一点,以便我可以从 GridViewA 选择一行并将其移动到 GridViewB (不是复制)。 然后就可以从
如何在 yii2 GridView 中为每个 TH 和 TD 添加 css 类
我正在尝试使用 GridView:widget() 中的列索引在 yii2 gridview 中显示数据。我在数据库中有大量字段(大约 40 个),需要显示所有字段并想要添加相同的 css
所以我有一个带有 4 个 div 的简单网格。 Divs 2,3 和 4 包含图表,div 1 保留用于某些文本。 当向 div 1 添加更多文本时,它会自动扩展高度以容纳文本。这...
我正在尝试上传gridview内“Fileupload”控件的onchange事件文件。 意味着当用户上传文件时,我本身需要将文件内容保存在数据库中。 所以,我手动
我有一个动态项目列表,正在输出到 GridView.count 构造函数中,其中 mainAxisCount 为 2(2 列网格)。如果列表长度为奇数,则最后一行将仅包含单个项目。 ...