将数据存储区值作为参数OnRowCommand asp:ButtonField传递

时间:2011-12-19 18:24:15

标签: c# asp.net gridview

想知道你们中是否有人可以帮助我或指出我正确的方向

我使用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?

1 个答案:

答案 0 :(得分:1)

或者,您可以使用GridView的DataKeyNamesSelectedIndexChanged事件来获取所需的值。数据键名称将映射到数据源中数据的列名。

<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"]);
 }