2014-01-15 3 views
1

У меня есть строка gridview, которая при нажатии должна сделать postback A и кнопочное поле в той строке, которая при нажатии должна сделать postback B. Проблема в том, что когда я нажимаю на поле кнопки, как event1, так и event2 запускается. Ниже приведен код.ASP.NET Gridview ButtonField onclick пожары, содержащие событие onclick строки

protected void gdv_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    string arg = Convert.ToString(((System.Web.UI.WebControls.CommandEventArgs)(e)).CommandArgument); 

    if (e.CommandName == "Command1") 
    { 
     doEvent1(arg); 
    } 
    else if (e.CommandName == "Command2") 
    { 
     doEvent2(arg); 
    } 
} 

protected void gdv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    {    
     LinkButton b1 = (LinkButton)e.Row.Cells[0].Controls[0]; 
     matchesButton.CommandArgument = arg1; 

     LinkButton rowLink = (LinkButton)e.Row.Cells[1].Controls[1]; 
     rowLink.CommandArgument = arg2; 

     e.Row.Attributes["onclick"] = ClientScript.GetPostBackClientHyperlink(rowLink, ""); 
    } 
} 

И это жерех код GridView

<Columns> 
    <asp:ButtonField DataTextField="f1" HeaderText="H1" CommandName="Command1" /> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="btn1" runat="server" Text="" CommandName="Command2" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

ответ

1

пытаются использовать этот

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Command2") 
    { 
     // Your Code here 
    } 
} 

найти управления в режиме использования вида сетки этот код

LinkButton lnkbtn= (LinkButton)e.Row.FindControl("btn1"); 
+0

Я уже делаю это в первой части своего кода –

+0

мой ответ обновлен –

+0

вы не можете 'FindControl' с' GridViewCommandEventArgs' вот так. Следуйте этому [answer] (http://stackoverflow.com/a/27159747/2374691), чтобы узнать, как правильно обращаться к FindControl – Ritwik

0

Попробуйте добавить обе кнопку с помощью sa мне <asp:TemplateField>, если вы не хотите, отдельные заголовки

<Columns> 
    <asp:TemplateField> 
    <ItemTemplate> 

     <asp:Button ID="button" runat="server" CommandName="Command1" /> 
     <asp:LinkButton ID="btn1" runat="server" CommandName="Command2" /> 

    </ItemTemplate> 
</asp:TemplateField> 
</Columns> 

если вы хотите отдельные заголовки сделать два отдельных <asp:TemplateField>, а затем добавить кнопки в них.

Смежные вопросы