c# - 如何在网络表单中动态创建分页按钮?
问题描述
我使用asp.net web application framework 3.5(用于学校学习的版本)。当我想创建分页时(不在数据网格中使用 javascript 或 pagersetting)。我对这种情况有想法:
- 计数行数将被选中 => 计算页数
- 使用 OFFSET 和 ROWS FETCH NEXT 准确获取每个页面的数据
- 生成列表链接按钮用于分页使用页数
但是当我在外面创建按钮时Page_Load(),此按钮无法调用OnClick事件(我尝试了多种方法动态创建按钮但也不起作用)。我认为当我单击这些按钮时,首先运行Page_Load(),并且这些按钮的数据不会回传服务器
但我无法在Page_Load()内部创建因为我需要知道单击按钮的位置(更改分页)。我该如何解决这种情况,而不仅仅是分页,我想知道为什么在Page_Load()外部动态创建按钮、链接按钮、..不起作用。
有代码演示:
WebForm1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="OrderController.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="DivContainer" runat="server">
<asp:TextBox ID="TextBoxField" runat="server" Text="NOT CLICK"></asp:TextBox>
<div id="ButtonContainer" runat="server">
<asp:LinkButton ID="FixedButton" Text="Fixed Button" OnClick="Button_Click" runat="server"></asp:LinkButton>
</div>
</div>
</form>
</body>
</html>
*WebForm1.aspx.cs
using System;
using System.Web.UI.WebControls;
namespace OrderController
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //put genarate funciton here like genarate function will call in runtime, not call again when click in button
{
genarateDynamicButton();
}
}
private void genarateDynamicButton()
{
LinkButton lnk = new LinkButton();
lnk.ID = "DynamicButton";
lnk.Text = "Dynamic Button";
lnk.EnableViewState = true;
lnk.Attributes.Add("AutoPostBack", "true");
lnk.Click += new EventHandler(Button_Click);
ButtonContainer.Controls.Add(lnk);
}
protected void Button_Click(object sender, EventArgs e)
{
TextBoxField.Text = "Clicked";
}
}
}
这是代码将创建按钮,但在这种情况下不能使用
using System;
using System.Web.UI.WebControls;
namespace OrderController
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
genarateDynamicButton();
}
private void genarateDynamicButton()
{
LinkButton lnk = new LinkButton();
lnk.ID = "DynamicButton";
lnk.Text = "Dynamic Button";
lnk.EnableViewState = true;
lnk.Attributes.Add("AutoPostBack", "true");
lnk.Click += new EventHandler(Button_Click);
ButtonContainer.Controls.Add(lnk);
}
protected void Button_Click(object sender, EventArgs e)
{
TextBoxField.Text = "Clicked";
}
}
}
解决方案
推荐阅读
- reactjs - 如何解决有关 TypeScript 的此错误?
- android-emulator - adb root 不会在 android 模拟器上返回任何内容?
- php - 按版本排序多维数组
- json - 使用 jmeter 中的 JSON 提取器将授权令牌传递给后续请求
- angularjs - angularjs UI 网格 - 动态显示列
- javascript - python to javascript numpy ndarray 操作混乱
- flutter - Flutter:动态渲染可变长度文本,其中包含 TextField
- docker - 如何重新加载 systemd 服务?
- react-native - React Native Navigation v5 底部导航导航到新堆栈
- python - python manage.py 运行服务器不工作