想知道你们中是否有人可以帮助我或指出我正确的方向
我使用asp:GridView来显示一些数据,我添加了一个ButtonField作为其中一列,我想要做的是将其中一个文本列的值传递给OnRowCommand函数并进行一些计算它
我的GridView:
<asp:GridView ID="GridViewSchedule" runat="server" OnSorting="TaskGridView_Sorting" OnRowCommand="RowButtonClicked" AutoGenerateColumns="False" Font-Size="11px"
CssClass="Grid" AllowSorting="True">
<Columns>
<asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
<asp:BoundField DataField="Name" HeaderText="Schedule Name" SortExpression="Name" />
<asp:BoundField DataField="Message" HeaderText="Message Text" SortExpression="Message">
<ItemStyle Font-Size="10px" />
</asp:BoundField>
<asp:ButtonField ButtonType="Button" CommandName="ViewDetails" Text="View" ControlStyle-CssClass="ActionButton" />
</Columns>
</asp:GridView>
我想要传递的值未在上面列出,但它在商店中,我没有显示该列。
这是我从网格中调用的函数
protected void RowButtonClicked(object sender, GridViewCommandEventArgs e)
{
}
所以我想知道的是,我怎样才能传递其中一列的值,即使我必须将该列添加到网格中并将其可见性设置为false?
答案 0 :(得分:1)
或者,您可以使用GridView的DataKeyNames
和SelectedIndexChanged
事件来获取所需的值。数据键名称将映射到数据源中数据的列名。
<asp:GridView ID="GridViewSchedule" runat="server" DataKeyNames="ID,Date,Name" OnSorting="TaskGridView_Sorting"
AutoGenerateColumns="False" Font-Size="11px" CssClass="Grid"
AllowSorting="True"
onselectedindexchanged="GridViewSchedule_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
<asp:BoundField DataField="Name" HeaderText="Schedule Name" SortExpression="Name" />
<asp:BoundField DataField="Message" HeaderText="Message Text" SortExpression="Message">
<ItemStyle Font-Size="10px" />
</asp:BoundField>
<asp:ButtonField ButtonType="Button" CommandName="ViewDetails" Text="View" ControlStyle-CssClass="ActionButton" />
</Columns>
</asp:GridView>
然后像这样访问值:
protected void GridViewSchedule_SelectedIndexChanged(object sender, EventArgs e)
{
int val = Convert.ToInt32(GridViewSchedule.DataKeys[GridViewSchedule.SelectedIndex].Values["ID"]);
}