如何动态地将值写入函数调用?

时间:2012-05-11 20:04:44

标签: c# asp.net

<asp:LinkButton class="uibutton normal submit" ID="LinkButtonMAR" 
OnClick="MarkClientNoteRead(<%# Eval("NoteID") %>)" runat="server">
Mark as Read</asp:LinkButton>

这都在转发器中,它将返回一个音符列表。我想抓住NoteID并将其抛入OnClick="MarkClientNoteRead()"方法调用。

这可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用CommandArgument

<asp:LinkButton class="uibutton normal submit" 
     ID="LinkButtonMAR" 
     CommandName="MarkRead"
     CommandArgument='<%# Eval("NoteID") %>'
     Text="Mark as Read"
     OnCommand="MarkClientNoteRead" runat="server" />

protected void MarkClientNoteRead(Object sender, CommandEventArgs e) 
{
     int NoteID = int.Parse(e.CommandArgument.ToString());
}

请注意,您需要处理Command事件而不是Click事件。

答案 1 :(得分:0)

另一种更复杂的方式是:

<asp:LinkButton class="uibutton normal submit" ID="LinkButtonMAR" 
    OnClick="LinkButtonMAR_Click" runat="server">Mark as Read
</asp:LinkButton>
<asp:HiddenField ID="NoteID" runat="server" Value='<%# Eval("NoteID")%>' />

代码背后:

protected void LinkButtonMAR_Click(object sender, EventArgs e)
{
    LinkButton thisLinkBUtton = (LinkButton)sender;
    // substitute appropriate object for the GridViewRow below
    GridViewRow thisGridViewRow = (GridViewRow)thisLinkBUtton.Parent.Parent;
    HiddenField hdnNoteID = (HiddenField)thisGridViewRow.FindControl("NoteID"); 
    // run your update code...
}

我用过这个,但是我不得不使用Parent.Parent。另外,我需要来自同一行的其他数据。