2010-12-09 69 views
0

我曾經問過一個讓linkbutton在commandArgument中傳遞多個值的方法,然後我達到了傳遞由任何字符分隔的多個值的字符串並將其分割爲多個值的方法原來的零件......沒有解決,我不知道分裂時出了什麼問題!LinkBut​​ton傳遞多值可能的清潔解決方案

現在我嘗試了我得到的唯一解決方案,它創建了LinkBut​​ton的用戶控件並添加屬性以接受任何需要的值!可以請告訴我我的2種方法出了什麼問題,哪種更好?

第一個問題可以在這裏找到:link text

,這是對用戶的控制方法的代碼>>

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> 

回答

0

我看到的問題是,你有你的用戶控件的事件處理程序,你永遠不會真的使用。

不是100%確定,但是,在您的父頁的Page_Load中,您需要將MultivaluedLinkBut​​ton1_Clicked事件添加到您的處理程序。

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

基本上你是在告訴當用戶點擊您的LinkBut​​ton,MultivaluedLinkBut​​ton1_Clicked()父頁上應該被調用。

您可以從您的父頁面上的UserControl屬性中刪除OnClick =「MultivaluedLinkBut​​ton1_Clicked」。

+0

MultivaluedLinkBut​​ton1不可訪問,因爲它位於中繼器內,所以它的ID不是唯一的,儘管可以使用多值鏈接Button1_Clicked! 不知道如果你的答案是正確的,或者如何在page_load中訪問它! – lKashef 2010-12-09 12:08:17