我创建了一个带有转发器的 HTML 表格。在此表中,我添加了一个按钮列。它是一个 HTML 按钮,因为 ASP 按钮在标签内部不起作用。因此,我在这个 HTML 按钮中添加了一个 ASP 隐藏字段来获取选定的行 ID。我尝试了几种方法从隐藏字段中获取 ID。我想在单击按钮时获取选定的行 ID。
我试过以下
我试过这段代码,但在 SendValueToSender(id); 行中显示错误。 SendValueToSender 使用 suggestions It 生成的方法以红线显示。但是当我运行代码并单击按钮时显示错误。
button_edit_ServerClick
protected void button_edit_ServerClick(object sender, EventArgs e)
{
try
{
var btn = (HtmlButton)sender;
var child = btn.FindControl("hidden");
string id = Convert.ToString(((HiddenField)child).Value);
SendValueToSender(id);
Response.Write("id" + id);
}
catch (Exception exception)
{
Response.Write(exception);
}
}
为 SendValueToSender 生成的方法
private void SendValueToSender(string id)
{
throw new NotImplementedException();
}
错误-添加 SendValueToSender 方法后
System.NotImplementedException: 方法或操作未实现。在 C:\Users\kularathna\source\repos\EasyTravel\EasyTravel\Manage\ManageNode.aspx.cs 中的 EasyTravel.Manage.ManageNode.SendValueToSender(String id):第 241 行在 EasyTravel.Manage.ManageNode.button_edit_ServerClick(对象发送者, EventArgs e) 在C:\Users\kularathna\source\repos\EasyTravel\EasyTravel\Manage\ManageNode.aspx.cs:line 229
229 - SendValueToSender(id);
241 - throw new NotImplementedException();
页面加载方法
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//Create Database Connection
SqlConnection con = new SqlConnection("Data Source= LAPTOP-J70EHC58 ; Initial Catalog= Bus_Management_System ; Integrated Security = True ; Connect Timeout = 30 ; ");
con.Open();
//Retrieve node details
string sqlst = "SELECT * FROM Node ";
SqlDataAdapter sqlData = new SqlDataAdapter(sqlst, con);
DataTable dt = new DataTable();
sqlData.Fill(dt);
rptrNode.DataSource = dt;
rptrNode.DataBind();
}
}
管理节点.aspx
<table id="datatable-buttons" class="table table-striped table-bordered">
<thead>
<tr>
<th>Node_ID</th>
<th>Node_Name</th>
<th>Starting_Node</th>
<th>Ending_Node</th>
<th>Distance_Between_Nodes</th>
<th>Ticket_Price</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<asp:Repeater ID="rptrNode" runat="server">
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lblNodeID" runat="server" Text='<%# Eval("Node_ID") %>'></asp:Label></td>
<td>
<asp:Label ID="lblNodeName" runat="server" Text='<%# Eval("Node_Name") %>'></asp:Label></td>
<td>
<asp:Label ID="lblStartingNode" runat="server" Text='<%# Eval("Starting_Node") %>'></asp:Label></td>
<td>
<asp:Label ID="lblEndingNode" runat="server" Text='<%# Eval("Ending_Node") %>'></asp:Label></td>
<td>
<asp:Label ID="lblDistance" runat="server" Text='<%# Eval("Distance_Between_Nodes") %>'></asp:Label></td>
<td>
<asp:Label ID="lblTicketPrice" runat="server" Text='<%# Eval("Ticket_Price") %>'></asp:Label></td>
<td>
<button runat="server" clientidmode="Static" class="btn btn-success" id="button_edit" onserverclick="button_edit_ServerClick">
<asp:HiddenField runat="server" ID="hidden" Value='<%#Eval("Node_ID") %>' />
Edit
</button>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>
按钮列(在ManageNode.aspx上面)
<td>
<button runat="server" clientidmode="Static" class="btn btn-success" id="button_edit" onserverclick="button_edit_ServerClick">
<asp:HiddenField runat="server" ID="hidden" Value='<%#Eval("Node_ID") %>' />
Edit
</button>
</td>
最佳答案
在Design部分,加载Jquery Js和Page Js。
<td>
<button runat="server" clientidmode="Static" class="btn btn-success"
id="button_edit" onclick="func('<%#Eval("Node_ID") %>')">
Edit
</button>
</td>
在页面 Js 中:
$(document).ready(function(){
//button Click Function.
function func(Id){
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "../ManageNode.aspx/SendValueToSender",
data: "{ID: '" + Id + "'}",
dataType: "json",
success: function (data) {
var tdata = jQuery.parseJSON(data.d);
},
error: function (result) {
alert('Data not found.');
}
});
}
});
在服务器端。
[WebMethod]
public static void SendValueToSender(string ID)
{
//do your stuff.
}
关于c# - 如何在 asp.net 的代码隐藏中获取 html 按钮中的隐藏字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56196182/