LinkButton передает многозначные возможные чистые решения - PullRequest
0 голосов
/ 09 декабря 2010

Однажды я попросил способ, чтобы кнопка ссылки пропустила более одного значения в commandArgument, а затем я подошел к подходу, где я передаю строку из нескольких значений, разделенных любым символом, и делю ее на оригинальные части ... не получилось я не знаю что не так с расщеплением!

Теперь я попробовал единственное решение, которое я получил, это создание пользовательского элемента управления LinkButton и добавление свойств для принятия любых значений, которые необходимы! ... Не могли бы вы сказать мне, что не так с моими 2 подходами и что лучше?

Первый вопрос можно найти здесь: текст ссылки

и это код для подхода управления пользователем >>

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>

1 Ответ

0 голосов
/ 09 декабря 2010

Проблема, которую я вижу, состоит в том, что в вашем пользовательском контроле есть eventHandler, который вы никогда не используете.

Не уверен на 100%, но на Page_Load вашей родительской страницы вам нужно добавить событие MultivaluedLinkButton1_Clicked к вашемуhandler.

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

По сути, вы говорите, что когда пользователь нажимает на кнопку ссылки, вызывается MultivaluedLinkButton1_Clicked () на родительской странице.

Вы можете удалить OnClick = "MultivaluedLinkButton1_Clicked"свойства UserControl на родительской странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...