C# 使用单击元素的ID属性作为参数

C# 使用单击元素的ID属性作为参数,c#,asp.net,visual-studio-2010,C#,Asp.net,Visual Studio 2010,我有一个锚定标记列表,单击该列表时,我希望将其ID属性的值发送到存储过程的参数。除了我不知道如何使SqlCommand的Parameters属性的AddWithValue方法的第二个参数接受单击的内容,而不是硬编码它之外,一切都正常。结果从一个简单的存储过程中读取,然后放入网格视图控件中 标记: <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

我有一个锚定标记列表,单击该列表时,我希望将其ID属性的值发送到存储过程的参数。除了我不知道如何使
SqlCommand
Parameters
属性的
AddWithValue
方法的第二个参数接受单击的内容,而不是硬编码它之外,一切都正常。结果从一个简单的存储过程中读取,然后放入网格视图控件中

标记:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="jQueryEachExample._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">




    <asp:HyperLink ID="Xtown" runat="server">Xtown</asp:HyperLink>
    <asp:HyperLink ID="Ztown" runat="server">Ztown</asp:HyperLink>
    <asp:HyperLink ID="Atown" runat="server">Atown</asp:HyperLink>
    <asp:HyperLink ID="Bburg" runat="server">Bburg</asp:HyperLink>

<asp:GridView runat="server" ID="stateGridView">

</asp:GridView>     

</asp:Content>

根据我的理解,您应该使用LinkButton而不是hyperlink,并处理每个LinkButton的单击事件。将SQL代码放在单独的参数化方法中,并将每个事件的LinkButton控件Id作为参数传递。

使用
LinkButton的
CommandArgument


我假设这些按钮将以更通用的方式创建,例如在中继器内或其他地方

我建议将
超链接
更改为
链接按钮
,以便您可以访问
OnClick
事件,并将数据访问代码放入方法中,然后执行以下操作:-

<asp:LinkButton ID="Xtown" runat="server" OnClick="lnkButtonClick">Xtown</asp:LinkButton>

private void UpdateDB(string id)
{
     string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString;

     using (SqlConnection conn = new SqlConnection(cs))
     {
        //*snip*
        cmd.Parameters.AddWithValue("@cityName", id);//ID from clicked control 
     }
}


protected void lnkButtonClick(object sender, EventArgs e)
{
     string id = ((LinkButton)sender).ClientID;
     UpdateDB(id);
}
并以与clientid类似的方式访问它:

protected void lnkButtonClick(object sender, EventArgs e)
{
     string args = ((LinkButton)sender).CommandArgument;
     UpdateDB(args);
}
<asp:LinkButton ID="Xtown" runat="server" OnClick="lnkButtonClick" CommandArgument="Xtown">Xtown</asp:LinkButton>
protected void lnkButtonClick(object sender, EventArgs e)
{
     string args = ((LinkButton)sender).CommandArgument;
     UpdateDB(args);
}