1

我在 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 查询中调用它

4

2 回答 2

0

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

于 2013-10-01T10:00:33.157 回答
0

你可以使用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" />

希望这可以帮助

于 2013-10-01T10:35:22.953 回答