2012-03-22 40 views
22

Tôi có ImageButton với thuộc tính CommandArgument có nhiều giá trị Đánh giá. Khi tôi bấm vào một trong số chúng tôi muốn chuyển giá trị cho sự kiện ImageButton2_Click nhưng nó không hoạt động vì các đối số Command là null.Làm thế nào để vượt qua nhiều giá trị thông qua đối số lệnh trong 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> 

Đây là code-behind:

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

Sử dụng theo yêu cầu không OnClick. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.imagebutton.oncommand.aspx – Lloyd

+0

Vui lòng kiểm tra giá trị eval '<% # Eval (" row [0] .... .... etc%> 'đang truy xuất chính xác – Shebin

Trả lời

34

Tôi đã kiểm tra mã của bạn và dường như không có vấn đề gì cả. hãy chắc chắn Image commandArgument nhận giá trị. kiểm tra nó đầu tiên ràng buộc trong nhãn cho dù bạn đang nhận được giá trị.

Tuy nhiên, đây là mẫu mà tôi đang sử dụng trong dự án của tôi

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

ràng buộc đầu tiên trên 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

Tôi không sử dụng GridView ở đó và e.CommandArgument cho lỗi đó là clickeventargs không contatin một định nghĩa cho đối số lệnh – leventkalay92

+0

Tôi vừa chỉ cho bạn mẫu bạn có để ràng buộc GridView trước khi nhận được giá trị thông qua CommandArgument –

-1

Sử dụng theo yêu cầu của sự kiện ImageButton. Bên trong nó làm

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

Mã-đằng sau:

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

    } 
} 
+2

Nếu bạn định sao chép mã hoặc câu trả lời cho tín dụng, như MSDN! – Lloyd

+0

Vì vậy, @ leventkalay92 bạn nhận được điểm để chuyển nhiều giá trị thông qua lệnh args? tài liệu tham khảo tốt http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.commandargument.aspx – incomplete

-1

Bạn có thể thử này:

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

Không thể upvote nó bởi vì nó không trả lời câu hỏi, nhưng nó đã giúp tôi làm một cái gì đó hơi khác một chút. ks! : o) –

-1
CommandArgument='<%#Eval("ScrapId").Tostring()+ Eval("UserId")%> 
//added the comment function 
Các vấn đề liên quan