如何在此方案中获取gridview单元格的值

时间:2015-02-25 04:53:06

标签: c# asp.net events gridview

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

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

我有如下的LinkBut​​ton1_Click功能:

 protected void LinkButton1_Click(object sender, EventArgs e)
    {     

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

此变量“name”是GridView的第一列。我正在获取“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();

        }

    }

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

不知何故,name的值保持为null。

修改

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

所以我删除了RowDataBound函数。

我想我必须在LinkBut​​ton1_Click本身内处理这个问题。

我将此行添加到函数中:

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

仍然无效。 有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

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

  

通过事件冒泡代码处理linkbutton的click事件 -

<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;
    }
}
  

处理linkbutton的点击事件直接点击事件代码 -

<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;
}

希望这有帮助。