Gridview是用于显示和操作来自各种数据源的数据的控件。
ASP.NET GridView 不显示我的 PagerTemplate
我的用户控件中有以下代码: 我的用户控件中有以下代码: <asp:LinqDataSource ID="myLinqDataSource" runat="server" AutoSort="true" ContextTypeName="MyDBContext" TableName="myTable" AutoPage="true" Select="new(Edited, Activity)" Where="UserID == 4" /> <asp:GridView ID="gvTable" runat="server" ShowHeader="true" PageSize="5" AllowPaging="true" AllowSorting="true" DataSourceID="myLinqDataSource" AutoGenerateColumns="false" OnRowDataBound="GridView_DataBound"> <Columns> <asp:BoundField DataField="Edited" HeaderText="Date" DataFormatString="{0:d}" /> <asp:BoundField DataField="Activity" HeaderText="Notes" /> </Columns> <PagerSettings Position="Bottom" /> <PagerStyle BackColor="Black" ForeColor="White" Wrap="false" /> <PagerTemplate> Hello there </PagerTemplate> </asp:GridView> 由于某种原因,无论我做什么,寻呼机根本不会呈现。为什么? 如果我删除 PagerTemplate 标签并在 Mode 中使用一些标准 PagerSettings 设置,它甚至不会显示。我要疯了! 更新: 在进行了一些详尽的谷歌搜索后,我发现我可能正在使用非常旧版本的CSS友好控制适配器。 我相信是这样,因为这个错误也袭击了我!那么我如何知道我正在使用的这些适配器的版本是什么?我什至不知道我在使用它们! 更新2: 问题是我使用的是旧版本的 CSS 友好控制适配器。我下载了最新的源代码,编译了它,使用了新的 DLL 和 .browser 文件,现在它工作得很好。我将这个问题留在这里,以便遇到相同问题的任何人都可以从中找到帮助。 问题是我使用的是旧版本的 CSS 友好控制适配器。我下载了最新的源代码,编译了它,使用了新的 DLL 和 .browser 文件,现在它工作得很好。
我需要使用允许在列标题中进行过滤的网格。 我知道有一些第三方组件需要花钱。 我正在寻找免费/开源的东西......
这更像是一个集体回答而不是一个问题,我只是不知道如何发布它,版主如果你能告诉我是否有这样的事情。 这个问题问死了,然后我
Yii2:使用带有分页功能的 Pjax POST 方法在 Gridview 中搜索
我是 yii2 的初学者,尝试在搜索按钮上使用 Pjax 来搜索 Gridview 中的字段。我已经使用 GET 方法完成此操作,但我想使用 POST 方法完成此操作。那我该如何做到这一点...
我正在使用 flutter_staggered_grid_view: ^0.3.4 构建一个包含 5 个元素(图块)的菜单,我想根据特定布局显示这些元素,下面您将找到所需输出的图像和
我有两个 3d 点云,我知道它们点之间的变换矩阵。然而,两个点云被传递到顶视图投影,其中我忽略 z 轴坐标并且是
向与 SQL 数据源关联的网格视图添加一列 [C#/ASP/Webform]
我的 asp 页面中有一个 gridview,其中数据来自 SQL 数据源(存储过程)。我正在尝试找到一种方法将数据源中没有的列添加到网格视图中:我想要...
在 ASP.NET 3.5 中转换 gridview 中的文本框控件时出错
我有一个非常简单的命令,我只是在网格视图的页脚中找到文本框,并根据它的值我分配一些值。 if (!string.IsNullOrWhiteSpace(((TextBox)gvSession.
我正在开发一个c# asp.net 项目。 我创建了一个 gridview 并将其连接到数据库。我的代码是这样的; 我正在使用 c# asp.net 开发一个项目。 我创建了一个 gridview 并将其连接到数据库。我的代码是这样的; <asp:GridView ID="GridView1" runat="server" class="table table-bordered table table-hover " AutoGenerateColumns="false" HeaderStyle-Height="40px" OnRowCommand="GridView1_RowCommand1" > <Columns> <asp:TemplateField HeaderText="Numune Parçası" > <ItemTemplate> <asp:Literal ID="Literal22" runat="server" Text='<%# Eval("Açıklama") %>'></asp:Literal> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Analiz"> <ItemTemplate> <asp:Literal ID="Literal112" runat="server" Text='<%# Eval("Analiz") %>'></asp:Literal> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Tartım" ItemStyle-Width="10%"> <ItemTemplate> <asp:TextBox id="txttartim" runat="server" class="form-control" ></asp:TextBox> </ItemTemplate> <ItemStyle Width="10%"></ItemStyle> </asp:TemplateField> <asp:TemplateField HeaderText="Birim"> <ItemTemplate> <asp:DropDownList ID="birimlist" class="form-control" runat="server" > <asp:ListItem>g</asp:ListItem> <asp:ListItem>mg</asp:ListItem> <asp:ListItem>ml</asp:ListItem> <asp:ListItem>cm2</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Kaydet"> <ItemTemplate> <asp:LinkButton ID="Btn_Indir" runat="server" class="btn btn-primary btn-sm" Text="Kaydet" CommandName="Open" CommandArgument='<%# Eval("ID") %>' /> </ItemTemplate> </asp:TemplateField> </Columns> <HeaderStyle BackColor="#D14124" CssClass="gridheader" ForeColor="White" HorizontalAlign="Left" /> </asp:GridView> 后面的代码就是这样的 protected void GridView1_RowCommand1(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Open") { int RowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex; string name = ((TextBox)GridView1.Rows[RowIndex].FindControl("txttartim")).Text; DropDownList bir = (DropDownList)GridView1.Rows[RowIndex].FindControl("birimlist"); string birim = bir.SelectedItem.Value; } } 但我的问题是我无法获取所选行中文本框和下拉列表的值。 字符串 name 和 birim 为空。 尝试一下: if (e.CommandName == "Open") { GridViewRow selectedRow = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer); string name = ((TextBox)selectedRow.FindControl("txttartim")).Text; DropDownList bir = (DropDownList)selectedRow.FindControl("birimlist"); string birim = bir.SelectedItem.Value; } 我解决了问题。 当我在 Page_load 部分编写代码时,它起作用了!它不再为空。 if (!Page.IsPostBack) { load(); .. } 我经常只是放入一个普通的Jane asp.net按钮,并且我不费心使用GV内置命令(例如command)。 但是,您有一个命令,因此您可以触发“row”命令。 “行命令”在选定索引触发之前触发,实际上在选定索引触发之前触发。 我注意到您传递了“ID”。这并不是真正必要的,因为 GV 具有所谓的 DataKeys 功能。该功能允许您获取行(数据库)PK id,但真正好的一点是您不必公开、显示甚至使用隐藏字段或其他任何内容来获取该数据密钥。 (这很好,有几个原因 - 一个是你不必隐藏命令参数来获取数据库 PK 行。另一个巨大的问题是你的数据库 pk 值永远不会暴露在客户端 - 这对于安全性来说非常好)。 因此,请确保您的行事件被触发,并且您应该能够使用它,首先是链接按钮的标记: <asp:TemplateField HeaderText="View" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:LinkButton ID="cmdView" runat="server" Text="View" CommandName="Open" cssclass="btn btn-info" /> </ItemTemplate> </asp:TemplateField> 注意我如何不担心或通过“ID”。如前所述,datakeys 负责处理这个问题,在 GV def 中,我们有这个: <asp:GridView ID="GVHotels" runat="server" class="table" AutoGenerateColumns="false" DataKeyNames="ID" bla bla bla 所以,现在我们的代码是这样的: protected void GVHotels_RowCommand(object sender, GridViewCommandEventArgs e) { LinkButton lBtn = e.CommandSource as LinkButton; GridViewRow gRow = lBtn.NamingContainer as GridViewRow; int PKID = (int)GVHotels.DataKeys[gRow.RowIndex]["ID"]; Debug.Print("Row index click = " + gRow.RowIndex); Debug.Print("Database PK id = " + PKID); // get combo box for this row DropDownList cbo = gRow.FindControl("cboRating") as DropDownList; Debug.Print("Combo box value = " + cbo.SelectedItem.Value); Debug.Print("Combo box Text = " + cbo.SelectedItem.Text); 输出: Row index click = 7 Database PK id = 68 Combo box value = 2 Combo box Text = Good 因此,使用 datakeys - 因此您不必到处输入额外的属性来获取 PK 行值。 事实上,使用行命令通常更痛苦,您可以转储命令名称来触发该按钮单击。真的很好的是,您可以为 GV 中的每个按钮(或链接按钮)获得一个单独的好命令“代码存根”。 (无需尝试将所有代码推入 row 命令,然后使用一堆 if/then 或“case”语句来运行给定命令的代码)。 所以,我实际上建议你使用这个: <asp:TemplateField HeaderText="View" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:LinkButton ID="cmdView" runat="server" Text="View" OnClick="cmdView_Click1" cssclass="btn btn-info" /> </ItemTemplate> </asp:TemplateField> 所以,我们所做的就是添加一个常规的点击事件。它不会触发行命令,实际上不会触发 GV 的“选定索引已更改”,但在大多数情况下我不需要它们。所以,现在,如果您有 2 个或 5 个按钮,您只需将它们视为常规按钮即可。 (只需在标记中输入 onclick,然后选择 IntelliSense 弹出的“创建新事件”)。因此,现在我们的按钮代码是单独的,而不是行命令的一部分。我们的代码就变成了这样: protected void cmdView_Click1(object sender, EventArgs e) { LinkButton lBtn = sender as LinkButton; GridViewRow gRow = lBtn.NamingContainer as GridViewRow; int PKID = (int)GVHotels.DataKeys[gRow.RowIndex]["ID"]; Debug.Print("Row index click = " + gRow.RowIndex); Debug.Print("Database PK id = " + PKID); // get combo box for this row DropDownList cbo = gRow.FindControl("cboRating") as DropDownList; Debug.Print("Combo box value = " + cbo.SelectedItem.Value); Debug.Print("Combo box Text = " + cbo.SelectedItem.Text); } 所以,我倾向于不理会行命令 - 最好只进行常规的单击事件。请注意命名容器的使用 - 但其余代码是相同的。我只会使用“commandName”来触发行事件,因为然后 gv 索引更改事件触发 - 这对于突出显示整行很有用 - 但如果你不关心,那么甚至不用担心 CommandName - 只需使用常规点击事件,如上所述,这甚至更好,因为这样每个按钮都会获得 100% 自己的漂亮的小代码存根,就像任何其他按钮点击往往具有的那样。 所以我抓住了一个下拉列表,但你的代码可以这样说: TextBox tBox = gRow.FindControl("txttartim") as TextBox; debug.Print (tBox.Text);
我正在关注这个教程 https://www.aspsnippets.com/Articles/308/ASPNet-Nested-GridViews-GridView-inside-GridView-with-Expand-and-Collapse-feature/ 我的 aspx 文件如下所示: 我正在关注本教程 https://www.aspsnippets.com/Articles/308/ASPNet-Nested-GridViews-GridView-inside-GridView-with-Expand-and-Collapse-feature/ 我的 aspx 文件如下所示: <asp:GridView ID="dgvPickups" runat="server" AutoGenerateColumns="false" CssClass="Grid" DataKeyNames="PickupID" OnRowDataBound="PickupRowDataBound" > <Columns> <asp:TemplateField> <ItemTemplate> <img alt="" style="cursor: pointer" src="Content/plus.png" /> <img alt="" style="cursor: pointer; display: none" src="Content/minus.png" /> <asp:Panel ID="pnlProductLines" runat="server" Style="display: none" > <asp:GridView ID="dgvProductLines" runat="server" AutoGenerateColumns="false" CssClass="ChildGrid" EmptyDataText="No Product Records Found" > <Columns> <asp:HyperLinkField DataNavigateUrlFields="ProductLineID" DataNavigateUrlFormatString="ProductLine.aspx?ProductLineID={0}" Text="Edit" /> <asp:BoundField DataField="SKU" HeaderText="SKU" /> <asp:BoundField DataField="ProductDescription" HeaderText="Description" /> <asp:BoundField DataField="NetWeight" HeaderText="Net Weight" /> <asp:BoundField DataField="Volume" HeaderText="Volume" /> <asp:BoundField DataField="ProductClass" HeaderText="Product Class" /> <asp:BoundField DataField="Hazmat" HeaderText="Hazmat" /> <asp:BoundField DataField="PackageCount" HeaderText="Package Count" /> <asp:BoundField DataField="HandlingUnits" HeaderText="Handling Units" /> <asp:BoundField DataField="Stackable" HeaderText="Stackable" /> <asp:BoundField DataField="NMFCNumber" HeaderText="NMFC Number" /> <asp:HyperLinkField DataNavigateUrlFields="ProductLineID" DataNavigateUrlFormatString="ProductLine.aspx?DeleteProductLineID={0}" Text="Delete" /> </Columns> </asp:GridView> </asp:Panel> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="CustomerName" HeaderText="Customer Name" /> <asp:BoundField DataField="Name" HeaderText="Ship To" /> <asp:BoundField DataField="ContactName" HeaderText="Contact Name" /> <asp:BoundField DataField="ContactPhone" HeaderText="Contact Phone" /> <asp:BoundField DataField="ContactEmail" HeaderText="Contact Email" /> <asp:BoundField DataField="AccountNumber" HeaderText="Account Number" /> <asp:BoundField DataField="Instructions" HeaderText="Instructions" /> <asp:HyperLinkField DataNavigateUrlFields="PickupID" DataNavigateUrlFormatString="DeliveriesPickups.aspx?AddProducts={0}" Text="Add Products" /> <asp:HyperLinkField DataNavigateUrlFields="PickupID" DataNavigateUrlFormatString="DeliveriesPickups.aspx?PickupID={0}" Text="Edit" /> <asp:HyperLinkField DataNavigateUrlFields="PickupID" DataNavigateUrlFormatString="DeliveriesPickups.aspx?DeletePickupID={0}" Text="Delete" /> </Columns> </asp:GridView> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript"> $("[src*=plus]").on("click", function () { $(this).closest("tr").after("<tr><td></td><td class='products' colspan = '999'>" + $(this).closest("tr").find("[id*=Orders]").html() + "</td></tr>"); $(this).closest("tr").find("[src*=minus]").show(); $(this).hide(); }); $("[src*=minus]").on("click", function () { $(this).closest("tr").next().remove(); $(this).closest("tr").find("[src*=plus]").show(); $(this).hide(); }); </script> OnRowDataBound 事件如下所示: Protected Sub PickupRowDataBound(sender As Object, e As GridViewRowEventArgs) Handles dgvPickups.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim pickupId As Integer = dgvPickups.DataKeys(e.Row.RowIndex).Value Dim dgvProductLines As GridView = TryCast(e.Row.FindControl("dgvProductLines"), GridView) dgvProductLines.DataSource = clsProductLine.RetrieveDTByPickupID(pickupId) dgvProductLines.DataBind() End If End Sub 不幸的是,当我运行页面时,父 GridView 加载没有任何问题,但子 GridView 只显示“未定义” 任何帮助将不胜感激! 我尝试了几种不同的解决方案,当我单独加载每个 GridView 时,一切都按预期工作。 更改:$(this).closest("tr").after("" + $(this).closest("tr").find("[id*=Orders]").html() + "" ); 到 $(this).closest("tr").after("" + $(this).closest("tr").find("[id*=ProductLiness]").html() + ""); 我相信 dgvProductLines 是子 gridview。您的代码仍在寻找 gvOrders。
我正在使用几何读取器跟踪矩形网格中所有矩形的位置,以便稍后与它们进行交互。现在我想添加放大和滚动到 g 的选项...
我在自定义 WPF UserControl 的资源区域中定义了一个 DataTemplate,它为一堆“标志”呈现一堆彩色方块。目标是动态添加列到
我是 yii2 框架的新人,当我尝试连接两个以上的表时,它没有在 gridview 中加载。 我正在尝试从语言表中获取语言名称,我可以通过用户语言表获取该名称
我有一个带有两个动态列的 Asp Gridview。一列将显示一组字符(描述),另一列用于显示图像。 我只是想限制这个描述网格行嘿...
我想创建一个响应式 GridView() 但我发现的几乎所有内容都讨论了实现此目的的方法,其中涉及调整网格的行和列中的单元格数量。这不是我想要的...
我有表郎: 编号 |语言名称 表 2:消息: 编号 |消息代码 表3:词典 身份证号 |消息 ID |语言 ID |翻译 我想把语言带入gridview。格式:
带有 2 个参数的 ASP.NET Gridview 超链接不起作用
我有一个asp.net gridview,我想要在其中查看选项。根据 SAPID 和 CandidateID,它应该重定向到相应的页面。但是在传递这两个参数时,我无法使用
维护 Yii2 GridView 页面更改上的 Bootstrap 选项卡
我有一个页面有 5 个引导选项卡。当我在任何选项卡上更改寻呼机时,都会移动到第一个选项卡。 如何激活用于更改寻呼机的选项卡。 整个页面有 5 个 dataProvider。埃克...
我有一个 ListView 和一个 3 列的 GridView。我希望最后一列占据 ListView 的剩余宽度。
我正在尝试获取填充有图像的 GridView 当前可见单元格/行索引。 我找到了从侦听器中取出 id 的方法,但是当我开始在 ...