2011-07-19 31 views
2

我有一個嵌套中繼器 因爲在我的代碼中沒有控制是可見的,因此我發現我不得不使用FindControl來使控件可見。 我想buttonclick後的值傳遞從拉布勒,但我有一個很難得到正確沒有重載'ItemDataBound'匹配委託'System.EventHandler'

標籤與價值

<asp:Label ID="lblordernr" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.sid").ToString()%>'></asp:Label> 

按鈕使用:

<asp:Button ID="btnPaid" runat="server" Text="Paid" OnClick="rlrtAdres_ItemDataBound" 
         Style="height: 26px" CssClass="knop" CommandName="btnPaid" /> 

RepeaterItemDataBound

protected void rlrtAdres_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    Label lblordernr = e.Item.FindControl("lblordernr") as Label; 
    Repeater myRepeater = (Repeater)sender; 
    Button btn = (Button)sender; 
    switch (btn.CommandName) 
    { 
     case "btnPaid": 
      MutateSold("paid", lblordernr.Text); 
      break; 
    } 
} 

我第一次有一個正常的buttonOclick對照OL但我只是不知道如何將它與標籤值相結合,並調用數據庫的目的最終方法「MutateSold」與此轉發嵌套的中繼器和每一個無形的控制

protected void btnButton_Click(object sender, EventArgs e) 
{ 
    Control myControllblordernr = FindControl("lblordernr"); 
    Button btn = (Button)sender; 
    switch (btn.CommandName) 
    { 
     case "btnPaid": 
      MutateSold("paid", myControllblordernr.ToString()); 
      break; 
    } 
} 

回答

1

你得到你的錯誤在標題張貼因爲btnPaidClick事件預期的事件處理程序與類似的簽名:

protected void btnButton_Click(object sender, EventArgs e)

你在擁有的簽名的方法指點一下:

protected void rlrtAdres_ItemDataBound(object sender, RepeaterItemEventArgs e)

如果btnPaidlblordernr在同一個ItemTemplate該轉發器,你可以調用FindControl上的按鈕來獲得一個參考lblordernr。例如,如果btnPaid聲明如下:

<asp:Button ID="btnPaid" runat="server" Text="Paid" OnClick="btnPaid_Click" 
    Style="height: 26px" CssClass="knop" /> 

下面的代碼將讓你參考lblOrderNr

protected void btnPaid_Click(object sender, EventArgs e) 
{ 
    var btnPaid = (Button)sender; 
    var lblOrderNr = (Label)btnPaid.FindControl("lblordernr"); 
    var labelText = lblOrderNr.Text; 

    //Do whatever else needs to be done 
} 

或者,你可以在lblOrderNr添加值按鈕上的CommandArgument屬性,並從那裏也得到它的權利。

<asp:Button ID="btnPaid" runat="server" Text="Paid" OnClick="btnPaid_Click" 
    CommandArgument='<%# DataBinder.Eval(Container, "DataItem.sid").ToString()%>' 
    Style="height: 26px" CssClass="knop" /> 


protected void btnPaid_Click(object sender, EventArgs e) 
{ 
    var btnPaid = (Button)sender; 
    var labelText = btnPaid.CommandArgument; 

    //Do whatever else needs to be done 
} 
+0

THX您的時間,是的,他們是在同一個模板 – Sjemmie

+0

@Sjemmie沒問題,看到更新我的答案。希望有所幫助。 – rsbarro

+0

thk你SOOO很多,解決方案是如此簡單,它的工作 – Sjemmie

相關問題