我想问一下如何在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内。 请指导我。
答案 0 :(得分:4)
从命令源行的参考创建GridViewRow的对象。
GridViewRow row = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;
但请记住,您在上面的代码中使用哪种类型的对象控件来调用事件是LinkButton。但是如果你从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());