2012-03-22 23 views
22

Tengo ImageButton con atributo CommandArgument que tiene múltiples valores de evaluación. Cuando hago clic en uno de ellos, quiero pasar los valores al evento ImageButton2_Click, pero no funciona porque los argumentos del comando son nulos.¿Cómo pasar múltiples valores a través del argumento del comando en Asp.net?

<div class="sag-re-icerik" id="icerik2" runat="server">Lorem ipsum dolor sit amet, consectetur commodo et convallis et, auctor viverra metus. Aenean pharetra, arcu nec viverra mollis, turpis neque feugiat massa, non dapibus neque nunc ac orci. </div> 
    <div class="oy-verme"> 
     <div class="yildiz"><asp:ImageButton ID="ImageButton4" runat="server" Height="19px" ImageUrl="~/images/yildiz.png" onclick="ImageButton2_Click" Width="20px" style="position: relative; top: 13px; left:6px; float:left; " commandArgument='<%#Eval("sdasdas") + ","+Eval("fafasfa") %>' /></div> 
     <div class="yildiz"><asp:ImageButton ID="ImageButton5" runat="server" Height="19px" ImageUrl="~/images/yildiz.png" onclick="ImageButton5_Click" Width="20px" style="position: relative; top: 13px; left:8px; float:left;" commandArgument='<%#Eval("row[0].ToString()") + ","+Eval("row[1].ToString()") %>'/></div> 
     <div class="yildiz"><asp:ImageButton ID="ImageButton6" runat="server" Height="19px" ImageUrl="~/images/yildiz.png" onclick="ImageButton2_Click" Width="20px" style="position: relative; top: 13px; left:10px ; float:left; " commandArgument='<%#Eval("row[0].ToString()") + ","+Eval("row[1].ToString()") %>' /></div> 
     <div class="yildiz"><asp:ImageButton ID="ImageButton3" runat="server" Height="19px" ImageUrl="~/images/yildiz.png" onclick="ImageButton2_Click" Width="20px" style="position: relative; top:13px; left:12px ; float:left;" commandArgument='<%#Eval("row[0].ToString()") + ","+Eval("row[1].ToString()") %>' /></div> 
     <div class="yildiz"> <asp:ImageButton ID="ImageButton2" runat="server" Height="19px" ImageUrl="~/images/yildiz.png" onclick="ImageButton2_Click" Width="20px" style="position: relative; top: 13px; left: 14px; float:left;" commandArgument='<%#Eval("row[0].ToString()") + ","+Eval("row[1].ToString()") %>' /></div> 
     <div class="oy-sil"><img src="images/oy-sil.png" width="11" height="13" style="position: relative; top: 30px; " /></div> 
    </div> 
</div> 

Este es el código subyacente:

protected void ImageButton2_Click(object sender, ImageClickEventArgs e) 
{ 
    ImageButton objImage = (ImageButton)sender; 

    string[] commandArgs = objImage.CommandArgument.ToString().Split(new char[] { ',' }); 
    string id = commandArgs[0]; 
    string text = commandArgs[1]; 


    // string s= Imageid.UniqueID.ToString(); 
    //this.baslik2.Text = s; 
} 
+0

uso bajo demanda no OnClick. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.imagebutton.oncommand.aspx – Lloyd

+0

Compruebe los valores eval '<% # Eval (" fila [0] ... .... etc%> 'que están recuperando correctamente – Shebin

Respuesta

34

revisar su código y parece que no hay problema en absoluto. por favor, asegúrese de que Image commandArgument obtenga valor. verifique primero el encuadernado en la etiqueta si está obteniendo valor.

Sin embargo, aquí está la muestra, que estoy usando en mi proyecto

<asp:GridView ID="GridViewUserScraps" ItemStyle-VerticalAlign="Top" AutoGenerateColumns="False" Width="100%" runat="server" OnRowCommand="GridViews_RowCommand" > 
     <Columns> 
      <asp:TemplateField SortExpression="SendDate"> 
       <ItemTemplate> 
       <asp:Button ID="btnPost" CssClass="submitButton" Text="Comment" runat="server" CommandName="Comment" CommandArgument='<%#Eval("ScrapId")+","+ Eval("UserId")%>' /> 

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

primera unen GridView.

public void GetData() 
{ 
    //bind ur GridView 
    GridViewUserScraps.DataSource = dt; 
    GridViewUserScraps.DataBind(); 
} 

protected void GridViews_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Comment") 
    { 
     string[] commandArgs = e.CommandArgument.ToString().Split(new char[] { ',' }); 
     string scrapid = commandArgs[0]; 
     string uid = commandArgs[1]; 
    } 
} 
+0

No uso el gridview allí y e.CommandArgument da error que es que clickeventargs no contiene una definición para el argumento de comando – leventkalay92

+0

Acabo de mostrarle la muestra que tiene que vincular gridview antes de obtener el valor a través de CommandArgument. –

-1

caso de uso bajo demanda ImageButton. Dentro de ella hacen

<asp:Button id="Button1" Text="Click" CommandName="Something" CommandArgument="your command arg" OnCommand="CommandBtn_Click" runat="server"/> 

de código subyacente:

void CommandBtn_Click(Object sender, CommandEventArgs e) 
{  
    switch(e.CommandName) 
    { 
     case "Something": 
      // Do your code 
      break; 
     default:    
      break; 

    } 
} 
+2

Si va a copiar el código o las respuestas dan crédito, como a MSDN! – Lloyd

+0

Entonces, @ leventkalay92 obtiene el punto de cómo pasar múltiples valores a través de command args? Heres a buena referencia http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.commandargument.aspx – incomplete

-1

Puede probar esto:

CommandArgument='<%# "scrapid=" + Eval("ScrapId")+"&"+"UserId="+ Eval("UserId")%>' 
+0

No puedo votarlo porque no responde la pregunta, pero sí me ayudó a hacer algo un poco diferente. Entonces, entonces ¡Kansas! : o) –

-1
CommandArgument='<%#Eval("ScrapId").Tostring()+ Eval("UserId")%> 
//added the comment function 
Cuestiones relacionadas