将网格视图的特定元素存储为字符串

本文关键字:元素 存储 字符串 网格 视图 | 更新日期: 2023-09-27 18:33:30

我在aspx和c#中的代码有问题

网格视图如下所示

 FID    Name     
 100    ab  *Download*
 200    bb  *Download*

<asp:LinkButton ID="lnkDownload" runat="server" OnClick = "DownloadFile"
 CommandArgument='<%Eval("FID")%>'  Text="Download" CommandName="DownloadFile" />

我需要下载每个人的 FID 信息,所以我正在执行以下代码,但它没有返回任何内容

  protected void DownloadFile(object sender, EventArgs e)
   {
    string FID = ((LinkButton)sender).CommandArgument;

    var dt = GetData("select * from Personal_det where FID = '"+ FID +"'");
    if (dt != null && dt.Rows.Count > 0)
    {
        DataRow dr = dt.Rows[0];
   //
  // more code
 //
              }
 }

但是不尊重 FID,如果我尝试执行代码

    protected void DownloadFile(object sender, EventArgs e)
   {
    string FID = ((LinkButton)sender).CommandArgument;

    var dt = GetData("select * from Personal_det “ );
    if (dt != null && dt.Rows.Count > 0)
    {
        DataRow dr = dt.Rows[0];
     //
    // more code
     //
              }
    } 

此代码将下载存储在会话中的 FID 所需的文档。所以我知道问题出在我包含在代码中的 sql 查询中,正如您在上面的网格视图中看到的那样,每一行都有一个每个 FID 的下载链接,所以我需要从网格视图访问 FID 并在我在代码中编写的 sql 查询中调用它

将网格视图的特定元素存储为字符串

您可以使用gridView_RowCommand事件。

protected void gridView_RowCommand(object sender, object sender, GridViewCommandEventArgs e)
{
     int rowIndex = Convert.ToInt32(e.CommandArgument);
     gridView.SelectedIndex = rowIndex;
     if (e.CommandName == "DownloadFile")
     {
          DownloadFile(gridView.DataKeys[rowIndex]["FID"].ToString());
     }
}

在 aspx 代码中使用 DataKeyNames="FID",链接按钮应如下所示

<asp:LinkButton ID="lnkDownload" runat="server" CommandArgument='<%#Container.DataItemIndex%>'  Text="Download" CommandName="DownloadFile" />

希望这有帮助

<%Eval("FID")%>中缺少#,请将其替换为<%# Eval("FID")%>