【发布时间】:2011-01-10 14:12:34
【问题描述】:
将命令和身份 ID (int) 传递回 ASP.NET 中的代码的正确方法是什么。我正在查看 CommandName 和 CommandArgument。我读错了吗,但我认为 CommandArgument 传回了显示索引。这有什么帮助?
不知道如何将 CommandArugment 设置为我需要的 ID。
【问题讨论】:
将命令和身份 ID (int) 传递回 ASP.NET 中的代码的正确方法是什么。我正在查看 CommandName 和 CommandArgument。我读错了吗,但我认为 CommandArgument 传回了显示索引。这有什么帮助?
不知道如何将 CommandArugment 设置为我需要的 ID。
【问题讨论】:
您可以获取与该索引关联的 DataItem 并从中获取您需要的任何值。 这是一个链接,显示了一些方法来做到这一点......
【讨论】:
在 GridView 中设置 CommandName 和 CommandArgument 字段,然后您可以在后面的代码中访问这些值。
假设您在每一行都有一个图像按钮,当用户选择按钮时,您要访问该行的命令名称和参数。
<asp:GridView ID="gvwRecords" runat="server" DataKeyNames="ID" DataSourceID="objRecords" OnRowCommand="gvwRecords_RowCommand">
<Columns>
<asp:TemplateField HeaderImageUrl="~/Images/Approve_Header_Dark.gif">
<ItemTemplate>
<asp:ImageButton runat="server" ID="btnApprove" %>'
CausesValidation="false" AlternateText="Approve record" ImageUrl="~/Images/Unapproved.gif"
CommandName="Approve" CommandArgument='<%# Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
在后面的代码中:
protected void gvwRecords_RowCommand(object sender, GridViewCommandEventArgs e)
{
int recordID = int.Parse(e.CommandArgument.ToString());
if (recordID > 0)
{
switch (e.CommandName.ToLower())
{
case "sort":
break;
case "approve":
Record.ApproveRecord(recordID);
gvwRecords.DataBind();
break;
...
}
}
}
【讨论】: