我有一个包含以下列的表:
FileID | username | filename
我正在使用一个有两个列的gridview:
文件名 | 下载
在下载栏中,我有一个名为“下载”的按钮,用于下载文件。现在我想在单击“下载”按钮时检索文件 ID 或文件名。
我试过这条线来获取文件ID,但它给出了一个错误:
int FileID = (int)GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value;
错误:System.ArgumentOutOfRangeException 未被用户代码处理 Message=Index 超出范围。必须是非负数且小于集合的大小。
这是我的aspx页面代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="filelist"
Width="404px" onrowcommand="GridView1_RowCommand" Height="131px">
<Columns>
<asp:BoundField DataField="fileid" HeaderText="fileid" InsertVisible="False"
ReadOnly="True" SortExpression="fileid" Visible="False" />
<asp:BoundField DataField="userid" HeaderText="userid" SortExpression="userid"
Visible="False" />
<asp:BoundField DataField="filename" HeaderText="FileName"
SortExpression="filename" />
<asp:ButtonField HeaderText="Download" Text="Download" CommandName="download"/>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="filelist" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [FileDetails] WHERE ([userid] = @userid)">
<SelectParameters>
<asp:SessionParameter Name="userid" SessionField="userid" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
还有另一种方法可以做到这一点吗?