LinkBut​​ton传递多种可能的清洁解决方案

时间:2010-12-09 07:10:59

标签: c# asp.net webforms

我曾经问过一种让linkbutton在commandArgument中传递多个值的方法然后我到达了一个方法,我传递了一个由任意字符分隔的多个值的字符串并将其拆分为它的原始部分...没有成功我不知道分裂有什么问题!

现在我尝试了我得到的唯一解决方案,它创建了LinkBut​​ton的用户控件并添加属性以接受任何值!...你能告诉我我的2方法有什么问题,哪个更好?< / p>

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

这是用户控制方法的代码&gt;&gt;

MultivaluedLinkBut​​ton.ascx:

<asp:LinkButton ID="LnkBtnSort" runat="server" Text="Sort" OnClick="LnkBtnSort_Clicked"/>

MultivaluedLinkBut​​ton.ascx.cs:

public partial class MultivaluedLinkButton : System.Web.UI.UserControl
{
    public event EventHandler Click;
    private int _sortingType;
    private string _sortingFactor;
    private string _text;

 public int SortingType 
 { 
     set { _sortingType = value; } 
     get { return _sortingType; } 
 }

 public string SortingFactor
 {
     set { _sortingFactor = value; } 
     get { return _sortingFactor.ToString(); }
 }

 //public string Text
 //{
 //    set { _text = value; }
 //    get { return _text.ToString(); }
 //}

 protected void LnkBtnSort_Clicked(object sender, EventArgs e)
 {
     if( Click != null )
     {
         this.Click(this, EventArgs.Empty);
     }
 }

}

最后,这是在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>

1 个答案:

答案 0 :(得分:0)

我看到的问题是,你的usercontrol中有一个你从未真正使用过的eventHandler。

不是100%肯定,但是,在您的父页面的Page_Load上,您需要将MultivaluedLinkBut​​ton1_Clicked事件添加到您的处理程序。

MultivaluedLinkButton1.EventHandler_Click = new EventHandler(this.MultivaluedLinkButton1_Clicked);
MultivaluedLinkButton1.LnkBtnSort.Click = MultivaluedLinkButton1.EventHandler_Click;

基本上你告诉我们当用户点击你的链接按钮时,应该调用父页面上的MultivaluedLinkBut​​ton1_Clicked()。

您可以从父页面上的UserControl属性中删除OnClick =“MultivaluedLinkBut​​ton1_Clicked”。