aspxgridview 相关问题

ASPxGridView通常是对DevExpress提供的ASPxGridView的引用。它是DevExpress Inc.为支持ASP.Net WebForms提供的主要产品之一。

AspxGridView分页问题

我的页面上有一个 AspxGridView,我在单击按钮时设置了其数据源。当用户单击按钮时,我调用一个方法来设置其 DataSource 和 DataBind() 它。 PageSize 属性设置为 5...

回答 1 投票 0

使用 JavaScript 在 VB.Net 中选择网格中的项目后维护搜索条件

在 ASP.NET 创建的用户界面中,我有一个网格,可以在其中选择一组项目。为了便于参考,我使用 JavaScript 实现了一个搜索过程。 然而,当我选择...

回答 1 投票 0

ASPxGridView 分页器消失

我使用带有分页功能的ASPxGridView,分页器设置如下: 我还有一个 CustomButtonInitialize 事件: 保护...

回答 1 投票 0

ASPXGridView 中的自定义排序不适用于分页

我已经按照此处提到的步骤为 aspxgridview 实现了自定义排序:http://documentation.devexpress.com/#AspNet/CustomDocument3818 但是,我注意到它只对 c 进行排序...

回答 2 投票 0

启用分页时Gridview行删除/删除

我有一个启用分页的网格视图。 当我尝试删除第 1 页以外的页面上的行时,它删除的是不正确的行,而不是按下删除按钮的行。 保护...

回答 2 投票 0

有没有办法从 ASP:Gridview 中使用的单个单选按钮列表字段获取不同的值

我在 Gridview 内的 ASPX 页面中使用单选按钮列表: 我在 Gridview 内的 ASPX 页面中使用单选按钮列表: <asp:GridView ID="grdRampPrepQues" runat="server" class="table table-dark table-striped" AlternatingRowStyle-BackColor="#eaeaea" ShowHeader="true" EmptyDataRowStyle-HorizontalAlign="Center" EmptyDataRowStyle-ForeColor="Red" OnRowCreated="grdRampPrepQues_RowCreated" OnRowDataBound="grdRampPrepQues_RowDataBound" ShowHeaderWhenEmpty="true" EmptyDataText="No Data Found !!" AutoGenerateColumns="false"> <Columns> <asp:TemplateField HeaderText="Sl. No" ItemStyle-Width="4%" ItemStyle-HorizontalAlign="Center" HeaderStyle-CssClass="gridHeader" HeaderStyle-HorizontalAlign="Center" ItemStyle-CssClass="gridRow"> <ItemTemplate> <%--<asp:Label ID="lblSno" runat="server" Enabled="false" Text="<%#Container.DataItemIndex+1%>"></asp:Label>--%> <asp:Label ID="lblSno" runat="server" CssClass="WrapText" Text='<%#Eval("QUES_NUM_SEQ") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Description" ItemStyle-Width="60%" ItemStyle-CssClass="gridRow" HeaderStyle-HorizontalAlign="Left" HeaderStyle-CssClass="gridHeader" ItemStyle-HorizontalAlign="Left"> <ItemTemplate> <asp:Label ID="lblRampQues" runat="server" CssClass="WrapText" Text='<%#Eval("RAMP_PREP_QUES") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Response" ItemStyle-Width="20%" ItemStyle-CssClass="gridRow" HeaderStyle-HorizontalAlign="Center" HeaderStyle-CssClass="gridHeader" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblRampQuesType" runat="server" Visible="false" CssClass="WrapText" Text='<%#Eval("QUES_TYPE") %>'></asp:Label> <asp:RadioButtonList ID="rblOptions" runat="server" RepeatDirection="Horizontal" Visible="false" CssClass="rbl"> <asp:ListItem Text="Yes" Value="Yes"></asp:ListItem> <asp:ListItem Text="No" Value="No"></asp:ListItem> </asp:RadioButtonList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> 我为每个问题都标记了相同的单选按钮列表控件,我可以选择特定于问题的单个选项: 在此输入图片描述 现在我面临的问题是在后端尝试将数据存储在数据库中。我的数据库中有一个表,每次有人填写此表单时,我都会在其中添加一个新行。在我的 C# 代码中,我有这样的变量,当有人单击提交按钮并触发事件时,我需要存储来自前面的值: ques1 = radiobutton.selectedvalue; ques2 = radiobutton.selectedvalue; ques3 = radiobutton.selectedvalue; 在这里我无法理解如何从前面区分和获取每个问题的单选按钮的值。 抱歉我的英语不好,感谢你帮助我。 当然,请记住,GridView 内部的控件会一遍又一遍地重复。因此,您没有名为 rblOptions 的“一个”控件,但有一个“新”控件,其中为 GridView 的每一行生成一个 ID。 所以,你当然不能只使用控件 ID = rblOptions,因为它将应用于哪一行? 因此,您必须对相关的每一行使用“findControl”。 我没有您的数据,但此示例将展示如何将选定的 RadiobuttonList 保存回数据库的工作概念。 所以,比如说一些酒店的GridView,如果房间被检查过,我们有一个RB来设置。 所以,这个标记: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" CssClass="table table-hover" Width="50%" OnRowDataBound="GridView1_RowDataBound" > <Columns> <asp:BoundField DataField="FirstName" HeaderText="FirstName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="HotelName" HeaderText="HotelName" /> <asp:BoundField DataField="Description" HeaderText="Descripiton" /> <asp:TemplateField HeaderText="Description"> <ItemTemplate> <asp:RadioButtonList ID="rblOptions" runat="server" RepeatDirection="Horizontal" > <asp:ListItem Text="Yes" Value="Yes"></asp:ListItem> <asp:ListItem Text="No" Value="No"></asp:ListItem> </asp:RadioButtonList> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle CssClass="GridPager" /> </asp:GridView> <asp:Button ID="cmdSave" runat="server" Text="Save/Done" CssClass="btn btn-dark" OnClick="cmdSave_Click"/> <asp:Button ID="cmdCancel" runat="server" Text="Cancel Changes" CssClass="btn btn-dark" OnClick="cmdCancel_Click" style="margin-left:35px" /> 因此,加载的代码如下: DataTable dtHotels = new DataTable(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadData(); Session["dtHotels"] = dtHotels; } else { dtHotels = (DataTable)Session["dtHotels"]; } } void LoadData() { string strSQL = @"SELECT * FROM tblHotelsA WHERE Active = 1 ORDER BY HotelName"; dtHotels = General.MyRst(strSQL); GridView1.DataSource = dtHotels; GridView1.DataBind(); } 但是,事实证明需要一些“额外”工作,因为数据库中的列可能为 null(空)。通常,我们可以将 RB 绑定到标记中的表达式,但由于它可能为 null,所以这是行不通的。 因此,在行数据绑定上,我们测试 null,并且仅当值存在时,我们才设置 RB。 因此这段代码: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { RadioButtonList rbOption = (RadioButtonList)e.Row.FindControl("rblOptions"); DataRowView gRowData = (DataRowView)e.Row.DataItem; if (gRowData["Inspected"].ToString() != "") rbOption.Text = gRowData["Inspected"].ToString(); } } 因此,现在将显示 GV,用户可以自由选择/设置每行的每个 RB。 我们的保存按钮必须将选择发送回数据表。因此这段代码: protected void cmdSave_Click(object sender, EventArgs e) { GridToTable(); using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4)) { string strSQL = "SELECT * FROM tblHotelsA"; using (SqlCommand cmd = new SqlCommand(strSQL, conn)) { SqlDataAdapter da = new SqlDataAdapter(cmd); SqlCommandBuilder daU = new SqlCommandBuilder(da); conn.Open(); da.Update(dtHotels); } } Response.Redirect("TestJump.aspx"); // navagate back to options page } void GridToTable() { // send grid rows back to table. foreach (GridViewRow rRow in GridView1.Rows) { DataRow OneDataRow = dtHotels.Rows[rRow.DataItemIndex]; RadioButtonList rbOption = (RadioButtonList)rRow.FindControl("rblOptions"); if (rbOption.Text != "") OneDataRow["Inspected"] = rbOption.Text; } } 因此,上面将 GV 的每一行的选择传输回数据表,然后在“一”操作中,我们将所有更改发送回数据库。 结果是这样的: 请注意,如果我返回 GV,您会看到我的选择仍然存在并且已正确保存回数据库。 因此:

回答 1 投票 0

ASP.NET Web 窗体 GridView 和 SqlDataSource - 如何除以计数之和?

我想在 GridView 中将 SqlDataSource 的 SUM 与其他 SqlDataSource 的 COUNT 相除? 这怎么可能?

回答 1 投票 0

ASP/VB - Gridview - 选中复选框时获取行

我创建了一个网格视图,其中一列是一个复选框。我正在尝试使用侦听器来捕获已检查的行,然后将复选框的布尔值发送回以更新

回答 1 投票 0

使用 C# 在 ASP.NET 中使用 GridView 实现注册卖家页面

我想在asp中创建一个注册卖家页面gridview,c#我有一个注册页面,用户在其中输入他的详细信息并将详细信息添加到数据库中,现在我想要执行...

回答 1 投票 0

从数据集中选择特定行后无法将其绑定到 gridview 控件

我通过以下方式将数据集分配给 gridview 数据源属性: if (subCategId == "20") { grdPHPortion.DataSource = _ds.Tables[0].

回答 1 投票 0

还有另一种有效的方法将数据更新到gridview内的数据库吗?

所以我在这里所做的是将gridview内的数据插入和更新到数据库的过程。我在更新时遇到了一些问题。当我将数据插入多个...

回答 1 投票 0

尝试单击 gridview 行时发生 JavaScript 错误

我在服务器端(VB.net)的 devexpress gridview 的行中添加了一个单击事件。 受保护的子 gvSubNotes_HtmlRowPrepared(发送者作为对象,e 作为 ASPxGridViewTableRowEventArgs) e.行。

回答 1 投票 0

有条件隐藏GridView模板列

我试图有条件地隐藏 Gridview 中的模板列,我尝试了以下方法,但这不起作用。有没有办法在 .aspx 中执行此操作? 我试图有条件地隐藏 Gridview 中的模板列,我尝试了以下方法,但这不起作用。有没有办法在 .aspx 中做到这一点? <asp:TemplateField HeaderText="Grade" SortExpression="grade" Visible='<%# Convert.ToDouble(Eval("grade")) == 0 ? true : false %>'> <ItemTemplate> <%# string.Format("{0:0.#}", Convert.ToDouble(Eval("grade"))) %> </ItemTemplate> </asp:TemplateField> 您可以使用 itemDataBound 事件执行所有条件格式设置(颜色、隐藏等)。但是,您的示例标记似乎没有控件 - 并且您希望拥有该信息的控件。该控件应该有某种“id”或名称,您可以在代码中引用。 但是,由于您没有提供太多标记?然后我给出了单元格集合和您可能拥有的控件的示例。 所以,假设我们有这个简单的网格视图。请注意最后两个字段都是 City,一个是绑定字段(通常很常见),另一个是标签(但可以是文本框或任何 ASP.NET 控件)。 <asp:GridView ID="GridView1" runat="server" CssClass="table-hover" AutoGenerateColumns="False" DataKeyNames="ID"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> <asp:BoundField DataField="HotelName" HeaderText="HotelName" SortExpression="HotelName" /> <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /> <asp:TemplateField HeaderText ="City2"> <ItemTemplate> <asp:Label ID="lblCity" runat="server" Text = '<%# Eval("City") %>' >'<"></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> 好的,在页面加载时,我们使用以下代码加载上面的网格: protected void Page_Load(object sender, System.EventArgs e) { if (IsPostBack == false) LoadGrid(); } public void LoadGrid() { using (SqlCommand cmdSQL = new SqlCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels", new SqlConnection(My.Settings.TEST3))) { cmdSQL.Connection.Open(); GridView1.DataSource = cmdSQL.ExecuteReader; GridView1.DataBind(); } } 好的,我们得到这个输出: 现在,让我们根据城市隐藏一列。我们说 City =“Edmonton”,我们隐藏控件。 因此,您使用 itemData 绑定事件。 在此示例中,我有绑定字段(单元格)集合隐藏示例,以及如何使用模板化控件(查找控件)执行此操作。 所以,代码是这样的: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { GridViewRow gvRow = e.Row; // hide a Bound field TableCell f = gvRow.Cells(4); if (f.Text == "Edmonton") f.Style("Display") = "none"; // hide a templated control Label lbl = gvRow.FindControl("lblCity"); if (lbl.Text == "Edmonton") lbl.Style("Display") = "none"; } } 现在的输出是这样的: 还没有尝试过,但看起来很有希望:)

回答 2 投票 0

如何从行按钮的onclick事件中获取数据表中的列值

我想从行按钮的onclick事件中获取行的列值(并进行查询操作)。我怎样才能做到这一点 ?当按下 btnAktar 时,我想获取该行中的 Meslek 列的值。那...

回答 1 投票 0

如何将表格行的列形成输入字段

我有一个数据表。表格第一列是按钮;按钮上有一个 onclick 事件。另一列是公司名称,我想设置所选行的第一行表单部分的 txtFirm 名称字段...

回答 2 投票 0

如何将表格行的列形成输入字段

我有一个数据表。表格第一列是按钮;按钮上有一个 onclick 事件。另一列是公司名称,我想设置所选行的第一行表单部分的 txtFirm 名称字段...

回答 2 投票 0

如何向数据网格对象添加按钮列

我想向数据网格对象添加一个按钮列。我将数据表填充到 aspx.cs 文件中。我们的框架是.Net Webform结构。我怎样才能做到这一点?我的网格如下: 我想向数据网格对象添加一个按钮列。我将数据表填充到 aspx.cs 文件中。我们的框架是.Net Webform结构。我怎样才能做到这一点?我的网格如下: <div id="divSGKTecrube" runat="server"> <iskurControls:IskurGridView runat="server" ID="ctlGridSgkTecrube" AutoGenerateColumns="False" EmptyDataText="Tecrübe Bilginiz Bulunmamaktadır." EnableViewState="true" CssClass="table table-bordered table-condensed text-small"> <Columns> <asp:BoundField DataField="ISYERISICILNO" HeaderText="İşyeri Sicil No"> <HeaderStyle HorizontalAlign="Left" /> </asp:BoundField> <asp:BoundField DataField="ISYERIADI" HeaderText="İşyeri Adı"> <HeaderStyle HorizontalAlign="Left" /> </asp:BoundField> <asp:BoundField DataField="MESLEKKODU" HeaderText="Meslek Kodu"> <HeaderStyle HorizontalAlign="Left" /> </asp:BoundField> <asp:BoundField DataField="MESLEK" HeaderText="Meslek"> <HeaderStyle HorizontalAlign="Left" /> </asp:BoundField> <asp:BoundField DataField="SURE" HeaderText="Süre"> <HeaderStyle HorizontalAlign="Right" /> </asp:BoundField> <asp:BoundField DataField="BASLANGICTARIHI" HeaderText="Baş Tar"> <HeaderStyle HorizontalAlign="Right" /> </asp:BoundField> <asp:BoundField DataField="BITISTARIHI" HeaderText="Bit Tar"> <HeaderStyle HorizontalAlign="Right" /> </asp:BoundField> </Columns> <PagerStyle CssClass="grid-PagerStyle"></PagerStyle> <SelectedRowStyle CssClass="grid-SelectedRowStyle"></SelectedRowStyle> <HeaderStyle CssClass="grid-HeaderStyle"></HeaderStyle> <EditRowStyle CssClass="grid-EditRowStyle"></EditRowStyle> <AlternatingRowStyle CssClass="grid-AlternatingRowStyle"></AlternatingRowStyle> <FooterStyle CssClass="grid-FooterStyle"></FooterStyle> <RowStyle CssClass="grid-RowStyle"></RowStyle> <EmptyDataRowStyle CssClass="grid-EmptyRow" /> </iskurControls:IskurGridView> <div style="text-align: center"> <kaleCustomControls:DataPager ID="DataPager1" runat="server" VisibleIfNoNeed="False" PagerButtons="NextPrevious" /> </div> </div> 如何将按钮列添加到网格中: <Columns> <asp:TemplateField HeaderText="Actions"> <ItemTemplate> <asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="EditRow" /> </ItemTemplate> </asp:TemplateField> </Columns> 在您的 aspx.cs 文件中,您需要处理命令。您可以使用 IskurGridView 的 RowCommand 事件来执行此操作: protected void ctlGridSgkTecrube_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "EditRow") { // Handle edit logic int rowIndex = Convert.ToInt32(e.CommandArgument); // Access data for the selected row } else if (e.CommandName == "DeleteRow") { // Handle delete logic int rowIndex = Convert.ToInt32(e.CommandArgument); // Delete data for the selected row } } 记住将 RowCommand 事件处理程序添加到您的 IskurGridView: <iskurControls:IskurGridView runat="server" ID="ctlGridSgkTecrube" AutoGenerateColumns="False" OnRowCommand="ctlGridSgkTecrube_RowCommand" <!-- ... --> > <!-- Columns definition --> </iskurControls:IskurGridView>

回答 1 投票 0

Javascript - 维护屏幕位置无法加载动作背后的代码

使用以下代码保留屏幕位置 变量 xPos, yPos; var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequ ...</desc> <question vote="3"> <p>使用以下代码保留屏幕位置</p> <pre><code>&lt;script type=&#34;text/javascript&#34;&gt; var xPos, yPos; var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(BeginRequestHandler); prm.add_endRequest(EndRequestHandler); function BeginRequestHandler(sender, args) { xPos = $get(&#39;#UpdatePanel_1&#39;).scrollLeft; yPos = $get(&#39;#UpdatePanel_1&#39;).scrollTop; } function EndRequestHandler(sender, args) { $get(&#39;#UpdatePanel_1&#39;).scrollLeft = xPos; $get(&#39;#UpdatePanel_1&#39;).scrollTop = yPos; } &lt;/script&gt; </code></pre> <p>如以下链接所述 <a href="https://weblogs.asp.net/andrewfrederick/maintain-scroll-position-after-asynchronous-postback" rel="nofollow noreferrer">https://weblogs.asp.net/andrewfrederick/maintain-scroll-position-after-asynchronous-postback</a></p> <p>但是在使用上面的代码之后,我的动作背后的代码停止工作了。</p> <p>任何建议都会非常有帮助。</p> <blockquote> <p>ASPX代码</p> </blockquote> <pre><code>&lt;%@ Page Language=&#34;VB&#34; AutoEventWireup=&#34;false&#34; CodeFile=&#34;Default.aspx.vb&#34; Inherits=&#34;_Default&#34; MaintainScrollPositionOnPostback=&#34;True&#34; %&gt; </code></pre> <pre><code>&lt;%--&lt;link type=&#34;text/css&#34; href=&#34;css/ui-lightness/jquery-ui-1.8.19.custom.css&#34; rel=&#34;stylesheet&#34; /&gt; &lt;script type=&#34;text/javascript&#34; src=&#34;js/jquery-1.7.2.min.js&#34;&gt;&lt;/script&gt;--%&gt; &lt;link href=&#34;bootstrap/css/bootstrap.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34; /&gt; &lt;script type=&#34;text/javascript&#34; src=&#34;https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js&#34;&gt;&lt;/script&gt; </code></pre> <pre><code> &lt;asp:ScriptManager ID=&#34;ScriptManager1&#34; runat=&#34;server&#34; /&gt; &lt;script type=&#34;text/javascript&#34;&gt; var xPos, yPos; var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(BeginRequestHandler); prm.add_endRequest(EndRequestHandler); function BeginRequestHandler(sender, args) { xPos = $get(&#39;divScroll&#39;).scrollLeft; yPos = $get(&#39;divScroll&#39;).scrollTop; } function EndRequestHandler(sender, args) { $get(&#39;divScroll&#39;).scrollLeft = xPos; $get(&#39;divScroll&#39;).scrollTop = yPos; } &lt;/script&gt; &lt;asp:UpdateProgress ID=&#34;UpdateProgress1&#34; runat=&#34;server&#34; AssociatedUpdatePanelID=&#34;UpdatePanel_1&#34;&gt; &lt;ProgressTemplate&gt; &lt;div class=&#34;modal_1&#34;&gt; &lt;div class=&#34;center&#34;&gt; &lt;img alt=&#34;&#34; src=&#34;Loader.gif&#34; /&gt; &lt;/div&gt; &lt;/div&gt; &lt;/ProgressTemplate&gt; &lt;/asp:UpdateProgress&gt; &lt;asp:UpdatePanel runat=&#34;server&#34; ID=&#34;UpdatePanel_1&#34;&gt; &lt;ContentTemplate&gt; &lt;div class=&#34;divScroll&#34;&gt; &lt;div class=&#34;container&#34;&gt; &lt;div class=&#34;row&#34;&gt; &lt;div class=&#34;col-md-3&#34;&gt; &lt;div class=&#34;CustomDiv&#34;&gt; Gender &lt;/div&gt; &lt;/div&gt; &lt;div class=&#34;col-md-3&#34;&gt; &lt;div class=&#34;CustomDiv&#34;&gt; &lt;asp:TextBox ID=&#34;txtGender&#34; runat=&#34;server&#34; Height=&#34;40px&#34; Width=&#34;100%&#34;&gt;&lt;/asp:TextBox&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&#34;col-md-3&#34;&gt; &lt;div class=&#34;&#34;&gt; &lt;asp:CheckBox ID=&#34;chkNotKnown&#34; runat=&#34;server&#34; AutoPostBack=&#34;True&#34; Text=&#34;&amp;nbsp;&amp;nbsp;(Not Known)&#34; Font-Bold=&#34;False&#34; /&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&#34;col-md-3&#34;&gt; &lt;div class=&#34;cssErrorMsg&#34;&gt; &lt;asp:RequiredFieldValidator ID=&#34;rfvGender&#34; runat=&#34;server&#34; ControlToValidate=&#34;txtGender&#34; ErrorMessage=&#34;Gender Required&#34; InitialValue=&#34;&#34; BackColor=&#34;Yellow&#34;&gt;&lt;/asp:RequiredFieldValidator&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/ContentTemplate&gt; &lt;Triggers&gt; &lt;%--&lt;asp:PostBackTrigger ControlID = &#34;txtGender&#34; /&gt;--%&gt; &lt;/Triggers&gt; &lt;/asp:UpdatePanel&gt; &lt;/div&gt; &lt;/form&gt; </code></pre> <blockquote> <p>Vb.Net 代码</p> </blockquote> <pre><code>Partial Class _Default Inherits System.Web.UI.Page Protected Sub chkNotKnown_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkNotKnown.CheckedChanged With txtGender If chkNotKnown.Checked Then .Text = &#34;Not Known&#34; .Enabled = False Else .Text = &#34;&#34; .Enabled = True End If .Focus() End With End Sub End Class </code></pre> <p>我有几个从服务器检索数据的控件,但我只是展示了一个简单的代码示例以供参考。</p> <p>注释/删除上面的 JS 将使代码隐藏操作运行。否则点击 chkNotKnown 复选框将不会触发事件。</p> <p><strong>反馈 1</strong></p> <p>尝试了所有建议,JS 代码仍然没有保留屏幕位置。我想知道它是如何在提供的链接中为其他人工作的:(。</p> <p><strong>反馈2</strong></p> <p>最后我结束了使用下面的 JS</p> <blockquote> <p>在 ASPX 代码页中</p> </blockquote> <pre><code>&lt;script type=&#34;text/javascript&#34;&gt; var xPos, yPos, needScroll; var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(BeginRequestHandler); prm.add_pageLoaded(EndRequestHandler) function BeginRequestHandler(sender, args) { xPos = 0; yPos = window.pageYOffset || document.documentElement.scrollTop; } function EndRequestHandler(sender, args) { if (needScroll) { window.setTimeout(&#34;window.scrollTo(&#34; + xPos + &#34;,&#34; + yPos + &#34;)&#34;, 100); } } &lt;/script&gt; </code></pre> <blockquote> <p>在代码隐藏页面加载事件中</p> </blockquote> <pre><code>ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType(), &#34;ScrollTo&#34;, &#34;var needScroll = true;&#34;, True) </code></pre> <blockquote> <p>来源链接</p> </blockquote> <p><a href="https://www.c-sharpcorner.com/blogs/maintain-or-set-page-scroll-position-after-asynchronous-postback-in-asp-net-ajax" rel="nofollow noreferrer">https://www.c-sharpcorner.com/blogs/maintain-or-set-page-scroll-position-after-asynchronous-postback-in-asp-net-ajax</a></p> </question> <answer tick="false" vote="1"> <p><strong>注意:</strong> 在您的代码中有两个不同的<em>BeginRequestHandler 函数</em>,</p> <ol> <li><pre><code>on top</code></pre>你正在使用<pre><code>update panel id</code></pre>和</li> </ol> <blockquote> <pre><code>function BeginRequestHandler(sender, args) { xPos = $get(&#39;#UpdatePanel_1&#39;).scrollLeft; yPos = $get(&#39;#UpdatePanel_1&#39;).scrollTop; } </code></pre> </blockquote> <ol start="2"> <li><pre><code>on bottom code</code></pre>你正在使用<pre><code>div class name</code></pre>.</li> </ol> <blockquote> <pre><code>function BeginRequestHandler(sender, args) { xPos = $get(&#39;divScroll&#39;).scrollLeft; yPos = $get(&#39;divScroll&#39;).scrollTop; } </code></pre> </blockquote> <p><strong>问题是什么:</strong></p> <blockquote> <p>错误显示为 <em>无法读取 null 的属性(读取“scrollLeft”)</em></p> </blockquote> <p><strong>问题原因:</strong></p> <blockquote> <p><pre><code>id</code></pre> 用于变量 <em>xPos</em> 和 <em>yPos</em> 返回 null.</p> </blockquote> <p><strong>解决方案一:</strong></p> <p>如果你想使用<pre><code>update panel id</code></pre>然后试试这个</p> <p>从 ID 开始删除#:</p> <pre><code>$get(&#39;#UpdatePanel_1&#39;).scrollLeft; </code></pre> <p>像这样使用它:</p> <pre><code>$get(&#39;UpdatePanel_1&#39;).scrollLeft; </code></pre> <p><strong>解决方案2:</strong></p> <p>如果你想使用<pre><code>div id</code></pre>然后试试这个</p> <p>将 id 添加到您的 div.</p> <p>HTML:</p> <pre><code>&lt;div class=&#34;divScroll&#34; id=&#34;divScroll&#34;&gt; </code></pre> <p>JavaScript:</p> <pre><code>function BeginRequestHandler(sender, args) { xPos = $get(&#39;divScroll&#39;).scrollLeft; yPos = $get(&#39;divScroll&#39;).scrollTop; } </code></pre> </answer> <answer tick="false" vote="0"> <p>正如您提到的,您的代码隐藏操作在添加 JS 代码后不起作用。 可能的原因是:</p> <p>1.使用文档准备好后执行的js代码块 2.$get 不适用于搜索元素使用 $("#ID") 或 javascript 'document.getElementById'</p> <pre><code> &lt;script type=&#34;text/javascript&#34;&gt; var xPos, yPos; $( document ).ready(function() { var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_beginRequest(BeginRequestHandler); prm.add_endRequest(EndRequestHandler); }); function BeginRequestHandler(sender, args) { xPos = document.getElementById(&#39;divScroll&#39;).scrollLeft; yPos = document.getElementById(&#39;#divScroll&#39;).scrollTop; } function EndRequestHandler(sender, args) { document.getElementById(&#39;#divScroll&#39;).scrollLeft = xPos; document.getElementById(&#39;#divScroll&#39;).scrollTop = yPos; } &lt;/script&gt; </code></pre> </answer> <answer tick="false" vote="0"> <p>请像这样添加更新面板的属性<a href="https://learn.microsoft.com/en-us/dotnet/api/system.web.ui.control.clientidmode?view=netframework-4.8.1" rel="nofollow noreferrer">ClientIdMode</a>:</p> <pre><code>&lt;asp:UpdatePanel runat=&#34;server&#34; ID=&#34;UpdatePanel_1&#34; ClientIdMode=&#34;Static&#34;&gt; </code></pre> <p>如果您不这样做,Asp.NET Web 窗体会在 ID 属性值中添加一个动态后缀(如 GUID 数字),您的 JavaScript 代码将永远无法识别呈现的 HTML ID 属性值<pre><code>#UpdatePanel_1</code></pre></p> </answer> </body></html>

回答 0 投票 0

Devexpress ASPxGridView BatchUpdate - 从 c# 每个单元格更新中更新特定值

我正在使用 Devexpress ASPxGridView BatchUpdate 使用更新查询 更新工单表 设置数量 = @Qty, JobStatusID = @JobStatusID WHERE (WorkOrderRowIndex = @WorkOrderRowIndex) @Qty 会...

回答 0 投票 0

如何创建/添加到边界域/模板域的超链接?

我们已经创建了带有 gridview 和数据库数据绑定的网页: 现在我想在数字列中添加一个超链接,以便我可以重定向到其他网站。下面是...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.