asp.net gridview onrowcommand - >(GridViewCommandEventArgs)

时间:2011-12-11 14:22:44

标签: c# gridview

我想问一下如何在gridview中获取按钮的文本或值? 但我想从这个onrowcommand获取文本值,该值使用 GridViewCommandEventArgs 作为参数。

好像我使用onrowdatabound是( GridViewRowEventArgs ),这使我很容易在gridview中获取button.text

string example = ((Button)e.Row.FindControl("btnStop")).Text;

我想让button.text在onrowcommand中执行if else循环。 谁知道怎么做?

 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" CellPadding="2" CellSpacing="2"    HorizontalAlign="Center"   PageSize="5"  Width="133%" DataKeyNames="SurveyID" DataSourceID="SqlDataSource1" 
  AutoGenerateColumns="False" onrowcommand="stop_survey" 
       onrowdatabound="filter_select" onselectedindexchanging="selected" 
                                   >

背后的代码

 public void filter_select(object sender, GridViewRowEventArgs e)
 {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {....
     ((Button)e.Row.FindControl("btnStop")).Text = "Start"; 
    }
 }

 public void stop_survey(object sender, GridViewCommandEventArgs e)
 {
      //i want to get the "btnStop" button text which is nested on the gridview.
 }

我想获取btnStop文本,因为我希望根据其文本(例如,开始或停止)拥有不同的sqlstatement 问题是我不能做e.Row在stop_survey内。 请指导我。

1 个答案:

答案 0 :(得分:4)

从命令源行的参考创建GridViewRow的对象。

GridViewRow row = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;

但请记住,您在上面的代码中使用哪种类型的对象控件来调用事件是LinkBut​​ton。但是如果你从Simple Button调用Rowcommand事件那么你需要写下这个:

GridViewRow row = (GridViewRow)((Button)e.CommandSource).NamingContainer;

创建行对象之后您可以使用rowindex从Gridview中找到任何控件。

Label LabelEmail = (Label)GridView1.Rows[row.RowIndex].FindControl("LabelEmail");

最后,您可以访问该控件的属性。

LabelResult.Text = LabelEmail.Text; 

与上面相同您还可以使用GridViewRow rowindex找到gridview的Datakeys。

int code = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[0].ToString());