C# '无过载;ItemDataBound';匹配委托';System.EventHandler';
我有一个嵌套的中继器 正因为如此,我的代码中没有可见的控件,也正因为如此,我发现必须使用FindControl才能使控件可见。 我想在点击按钮后传递标签上的值,但我很难做到正确 该标签包含值C# '无过载;ItemDataBound';匹配委托';System.EventHandler';,c#,asp.net,itemdatabound,C#,Asp.net,Itemdatabound,我有一个嵌套的中继器 正因为如此,我的代码中没有可见的控件,也正因为如此,我发现必须使用FindControl才能使控件可见。 我想在点击按钮后传递标签上的值,但我很难做到正确 该标签包含值 <asp:Label ID="lblordernr" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.sid").ToString()%>'></asp:Label> 我最初有一个普通的Butt
<asp:Label ID="lblordernr" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.sid").ToString()%>'></asp:Label>
我最初有一个普通的ButtonClick控件,但我不知道如何将它与标签值结合起来,并调用最后一个方法“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;
}
}
您在标题中发布了错误,因为
btnPaid
的Click
事件需要一个签名如下的事件处理程序:
protectedvoidbtnbutton\u单击(对象发送者,事件参数)
您将它指向一个签名为的方法:
protectedvoid rlrtAdres\u ItemDataBound(对象发送方,RepeaterItemEventArgs e)
如果中继器的btnPaid
和lblordernr
在同一ItemTemplate
中,您可以调用按钮上的FindControl
以获取对lblordernr
的引用。例如,如果btnPaid
是这样声明的:
<asp:Button ID="btnPaid" runat="server" Text="Paid" OnClick="btnPaid_Click"
Style="height: 26px" CssClass="knop" />
或者,您也可以将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
}
受保护的无效btnPaid_单击(对象发送者,事件参数e)
{
var btnPaid=(按钮)发送方;
var labelText=btnPaid.CommandArgument;
//做任何其他需要做的事情
}
@Sjemmie没问题,请参阅我答案的更新。希望有帮助。
<asp:Button ID="btnPaid" runat="server" Text="Paid" OnClick="btnPaid_Click"
Style="height: 26px" CssClass="knop" />
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
}
<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
}