C# 从Gridview的边界字段访问数据
我有一个这样的网格视图C# 从Gridview的边界字段访问数据,c#,asp.net,C#,Asp.net,我有一个这样的网格视图 <asp:GridView ID="gv_FilesList" runat="server" AutoGenerateColumns="false" onrowcommand="gv_FilesList_RowCommand"> <Columns> <asp:BoundField DataField="f_Id" Visible="false" HeaderText="File Name" /> </Columns
<asp:GridView ID="gv_FilesList" runat="server" AutoGenerateColumns="false" onrowcommand="gv_FilesList_RowCommand">
<Columns>
<asp:BoundField DataField="f_Id" Visible="false" HeaderText="File Name" />
</Columns>
<Columns>
<asp:BoundField DataField="f_Name" HeaderText="File Name" />
</Columns>
<Columns>
<asp:ButtonField ButtonType="Link" Text="Download" CommandName="DownloadFile" HeaderText="Download" />
</Columns>
</asp:GridView>
现在,当我点击下载按钮时,我如何获得相应的f_Id以便从数据库中获得相关数据 描述了您的问题的解决方案。
基本上,您可以访问名为
CommandArgument
的事件参数属性中的行索引。描述了问题的解决方案。
基本上,您可以通过多种方式访问名为
CommandArgument
的事件参数属性中的行索引,但您可以按如下方式访问它:
void gv_FilesList_RowCommand(Object sender, GridViewCommandEventArgs e) {
if(e.CommandName=="DownloadFile")
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = gv_FilesList.Rows[index];
string fileDownloadId = row.Cells[1].Text;
//Pull from DB
}
然后将f_id添加到DataKeyNames属性,以便它存储隐藏字段值
<asp:GridView ID="gv_FilesList" runat="server" AutoGenerateColumns="false" onrowcommand="gv_FilesList_RowCommand" DataKeyNames="f_id">
有几种方法可以对其进行蒙皮,但您可以按如下方式访问它:
void gv_FilesList_RowCommand(Object sender, GridViewCommandEventArgs e) {
if(e.CommandName=="DownloadFile")
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = gv_FilesList.Rows[index];
string fileDownloadId = row.Cells[1].Text;
//Pull from DB
}
然后将f_id添加到DataKeyNames属性,以便它存储隐藏字段值
<asp:GridView ID="gv_FilesList" runat="server" AutoGenerateColumns="false" onrowcommand="gv_FilesList_RowCommand" DataKeyNames="f_id">
此代码应该可以工作,并在我的本地计算机上进行测试。
首先,添加到GridView
<asp:GridView ID="gv_FilesList" runat="server" AutoGenerateColumns="false" onrowcommand="gv_FilesList_RowCommand" DataKeyNames="f_Id">
<Columns>
<asp:BoundField DataField="f_Id" Visible="false" HeaderText="File Name" />
</Columns>
<Columns>
<asp:BoundField DataField="f_Name" HeaderText="File Name" />
</Columns>
<Columns>
<asp:ButtonField ButtonType="Link" Text="Download" CommandName="DownloadFile" HeaderText="Download" />
</Columns>
</asp:GridView>
此代码应该可以工作,并在我的本地计算机上进行了测试。
首先,添加到GridView
<asp:GridView ID="gv_FilesList" runat="server" AutoGenerateColumns="false" onrowcommand="gv_FilesList_RowCommand" DataKeyNames="f_Id">
<Columns>
<asp:BoundField DataField="f_Id" Visible="false" HeaderText="File Name" />
</Columns>
<Columns>
<asp:BoundField DataField="f_Name" HeaderText="File Name" />
</Columns>
<Columns>
<asp:ButtonField ButtonType="Link" Text="Download" CommandName="DownloadFile" HeaderText="Download" />
</Columns>
</asp:GridView>
但当我有Visible=“false”时,这将不起作用。我当然不想在gridview中显示f_id。请更新您的gridview,并将f_id添加到“DataKeyNames”属性,请参见上文。这是一个很好的小技巧,可以让它存储隐藏的变量。但是当我有Visible=“false”时,这将不起作用。我当然不想在gridview中显示f_id。请更新您的gridview,并将f_id添加到“DataKeyNames”属性,请参见上文。这是一个很好的小技巧,可以让它存储隐藏的变量。