如何在这种情况下获取 gridview 单元格的值

How to get value of a gridview cell in this scenario

我在 gridView 中有一个 link 按钮,如下所示:

 <asp:TemplateField HeaderText="Analyze">
                                 <ItemTemplate>
                                   <asp:LinkButton ID="LinkButton1" Text="Analyze"  runat="server"  OnClick="LinkButton1_Click"  />                                 
                                 </ItemTemplate>
                             </asp:TemplateField>

我的 LinkButton1_Click 函数如下:

 protected void LinkButton1_Click(object sender, EventArgs e)
    {     

        testtb.Text = name;
        Console.WriteLine(name);
     }

此变量 "name" 是 GridView.I 的第一列,我正在获取 "name" 的值,如下所示:

protected void UnanalysedGV_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataRowView d = (DataRowView)e.Row.DataItem;
            name = d["resultId"].ToString();

        }

    }

我希望在单击 link 按钮时,gridview 该行中第一列的值成为文本框 testtb 的文本。

不知何故,name 的值仍然为空。

编辑

我发现 RowDataBound 可能不是满足我要求的正确事件,因为我需要每一行的值。

所以我删除了 RowDataBound 函数。

我想我必须在 LinkButton1_Click 内部处理它。

我将这一行添加到函数中:

name = UnanalysedGV.SelectedRow.Cells[1].Text;

还是不行。 有人知道吗?

您可以使用下面提到的两种方法来完成。

Handle click event of linkbutton through event bubbling code -

<asp:GridView AutoGenerateColumns="false" runat="server" ID="grdCustomPagging" OnRowCommand="grdCustomPagging_RowCommand">
   <Columns>
       <asp:BoundField DataField="RowNumber" HeaderText="RowNumber" />
       <asp:BoundField DataField="DealId" HeaderText="DealID" />
       <asp:BoundField DataField="Dealtitle" HeaderText="DealTitle" />
       <asp:TemplateField HeaderText="View">
        <ItemTemplate>
       <asp:LinkButton runat="server" ID="lnkView" CommandArgument='<%#Eval("DealId") %>'
         CommandName="VIEW">View Deal</asp:LinkButton>
         </ItemTemplate>
       </asp:TemplateField>
   </Columns>
</asp:GridView>

protected void grdCustomPagging_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "VIEW")
    {
        LinkButton lnkView = (LinkButton)e.CommandSource;
        string dealId = lnkView.CommandArgument;
    }
}

Handle click event of linkbutton directly click event code -

<asp:GridView AutoGenerateColumns="false" runat="server" ID="grdCustomPagging">
   <Columns>
       <asp:BoundField DataField="RowNumber" HeaderText="RowNumber" />
       <asp:BoundField DataField="DealId" HeaderText="DealID" />
       <asp:BoundField DataField="Dealtitle" HeaderText="DealTitle" />
       <asp:TemplateField HeaderText="View">
        <ItemTemplate>
       <asp:LinkButton runat="server" ID="lnkView" OnClick="lnkView_Click">View Deal</asp:LinkButton>
         </ItemTemplate>
       </asp:TemplateField>
   </Columns>
</asp:GridView>

protected void lnkView_Click(object sender, EventArgs e)
{
    GridViewRow grdrow = (GridViewRow)((LinkButton)sender).NamingContainer;
    string rowNumber = grdrow.Cells[0].Text;
    string dealId = grdrow.Cells[1].Text;
    string dealTitle = grdrow.Cells[2].Text;
}

希望对您有所帮助。