Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Gridview的边界字段访问数据_C#_Asp.net - Fatal编程技术网

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”属性,请参见上文。这是一个很好的小技巧,可以让它存储隐藏的变量。