C# LinkButton传递多值可能的清洁溶液

C# LinkButton传递多值可能的清洁溶液,c#,asp.net,webforms,C#,Asp.net,Webforms,我曾经问过一种方法,让linkbutton在commandArgument中传递多个值,然后我找到了一种方法,在这种方法中,我传递了一个由多个值组成的字符串,这些值由任意字符分隔,然后将其拆分为原始部分……但没有成功,我不知道拆分出了什么问题 现在我尝试了我得到的唯一解决方案,那就是创建一个LinkButton的用户控件,并添加属性来接受任何需要的值!。。。你能告诉我我的两种方法有什么问题吗?哪一种更好 第一个问题可以在这里找到: 这是用户控制方法的代码>> 多值LinkButton.ascx:

我曾经问过一种方法,让linkbutton在commandArgument中传递多个值,然后我找到了一种方法,在这种方法中,我传递了一个由多个值组成的字符串,这些值由任意字符分隔,然后将其拆分为原始部分……但没有成功,我不知道拆分出了什么问题

现在我尝试了我得到的唯一解决方案,那就是创建一个LinkButton的用户控件,并添加属性来接受任何需要的值!。。。你能告诉我我的两种方法有什么问题吗?哪一种更好

第一个问题可以在这里找到:

这是用户控制方法的代码>>

多值LinkButton.ascx:

<asp:LinkButton ID="LnkBtnSort" runat="server" Text="Sort" OnClick="LnkBtnSort_Clicked"/>
最后,这里是我的控件在aspx页面中的实现:

    protected void MultivaluedLinkButton1_Clicked(object sender, EventArgs e)
    {

        MultivaluedLinkButton ctrl = (MultivaluedLinkButton)sender;

        using (SqlConnection cn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
        {
            using (SqlCommand cm1 = new SqlCommand(commandString2, cn1))
            {

                cm1.Parameters.Add("@arrange_by_id", System.Data.SqlDbType.Int);
                cm1.Parameters["@arrange_by_id"].Value = ctrl.SortingType;
                cn1.Open();
                using (SqlDataReader dr1 = cm1.ExecuteReader())
                {
                    SortBy_rpt.DataSource = dr1;
                    SortBy_rpt.DataBind();
                }
            }
        }
    }
“实施”页面中中继器的项目模板:

   <ItemTemplate>
   <uc1:MultivaluedLinkButton ID="MultivaluedLinkButton1" runat="server" OnClick="MultivaluedLinkButton1_Clicked" SortingType='<%#Eval("arrange_by_id")%>' />
   </ItemTemplate>

我看到的问题是,用户控件中有一个从未真正使用过的eventHandler

不是100%确定,但在父页面的页面加载上,需要将多值LinkButton1\u Clicked事件添加到处理程序中

MultivaluedLinkButton1.EventHandler_Click = new EventHandler(this.MultivaluedLinkButton1_Clicked);
MultivaluedLinkButton1.LnkBtnSort.Click = MultivaluedLinkButton1.EventHandler_Click;
基本上,您是在告诉用户,当用户单击linkbutton时,应该调用父页面上的多值LinkButton1_Clicked()


您可以从父页面上的用户控件属性中删除OnClick=“MultivaluedLinkButton1\u Clicked”。

MultivaluedLinkButton1不可访问,因为它位于中继器中,所以它的ID不唯一,尽管MultivaluedLinkButton1\u Clicked是可访问的!不知道你的答案是否正确,也不知道如何在页面加载中访问它!
MultivaluedLinkButton1.EventHandler_Click = new EventHandler(this.MultivaluedLinkButton1_Clicked);
MultivaluedLinkButton1.LnkBtnSort.Click = MultivaluedLinkButton1.EventHandler_Click;