如何将GridView列值传递给后面的代码而不显示它?在下面的代码中,我想捕获ContactID,而不是让它在GridView中可见。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"
OnRowCommand="_OnRowCommand"
>
<Columns>
<asp:BoundField DataField="ContactID" HeaderText="ContactID"
SortExpression="ContactID" InsertVisible="False" ReadOnly="True" />
.....other columns in the grid....
<asp:ButtonField ButtonType=Button CommandName="Remove" Text="Remove" />
</Columns>
</asp:GridView>
我想按如下方式捕获ContactID。我无法在GridView中将其设为visible = true。
if (e.CommandName.Equals("Remove"))
{
int index = Convert.ToInt32(e.CommandArgument);
int ContactID = Convert.ToInt32(GridView1.Rows[index].Cells[0].Text.Trim());
}
请帮忙。
谢谢..
答案 0 :(得分:1)
您想要的以及您的代码正在做什么是两回事。
我认为你在寻找的是:
String ContactID = e.Row.Cells(0).Text;
但是,我提出了另一种方式:
您可以在Button上使用CommandArgument。这意味着您通过Button本身传递参数。您不需要从任何其他控件获取参数。要做到这一点,你会这样做:
<asp:ButtonField ButtonType=Button CommandName="Remove" Text="Remove" CommandArgument='<%# Eval("ContactID") %>' />
然后您的代码如下所示:
if (e.CommandName.Equals("Remove"))
{
int ContactID = Convert.ToInt32(e.CommandArgument);
}
以下是GridView with CommandArguments的一个很好的例子。