我曾經問過一個讓linkbutton在commandArgument中傳遞多個值的方法,然後我達到了傳遞由任何字符分隔的多個值的字符串並將其分割爲多個值的方法原來的零件......沒有解決,我不知道分裂時出了什麼問題!LinkButton傳遞多值可能的清潔解決方案
現在我嘗試了我得到的唯一解決方案,它創建了LinkButton的用戶控件並添加屬性以接受任何需要的值!可以請告訴我我的2種方法出了什麼問題,哪種更好?
第一個問題可以在這裏找到:link text
,這是對用戶的控制方法的代碼>>
MultivaluedLinkButton.ascx:
<asp:LinkButton ID="LnkBtnSort" runat="server" Text="Sort" OnClick="LnkBtnSort_Clicked"/>
MultivaluedLinkButton.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>
MultivaluedLinkButton1不可訪問,因爲它位於中繼器內,所以它的ID不是唯一的,儘管可以使用多值鏈接Button1_Clicked! 不知道如果你的答案是正確的,或者如何在page_load中訪問它! – lKashef 2010-12-09 12:08:17