2016-07-11 23 views
0

Ich versuche, einen Spaltenwert in einer ausgewählten Zeile auszuwählen, aber ich kann die Zeile nicht auswählen. Es scheint, dass nach dem Klicken auf die Zeile, die ausgewählt werden soll, diese nicht in die if-Anweisung aufgenommen wird. Wenn ich die if-Anweisung in (dataItem.Selected = true) mit nur einem "=" ändere, wird die Rechnungs-ID für alle Zeilen zurückgegeben. Irgendwelche Ratschläge zur Lösung dieses Problems?Ich kann Spaltenwert in einem Telerik-Radgrid nicht abrufen.

protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     var a =""; 
     foreach (GridDataItem dataItem in RadGrid1.MasterTableView.Items) 
     { 
      if (dataItem.Selected == true) 
      { 

       a = dataItem.GetDataKeyValue("InvoiceId").ToString(); 
       Response.Write(a); 
      } 
     } 


    } 

Antwort

0

Erlauben Sie Mehrfachauswahl oder nur einzelne Auswahl in Ihrem RadGrid?

Für mich scheint die foreach-Schleife Codeblock nicht korrekt, wenn Sie einzelne Zeile Auswahl tun.

protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // get selected row 
    GridDataItem item =(GridDataItem)RadGrid1.SelectedItems[0]; 
} 

Auch ist ein weiterer Punkt, den Sie EnablePostBackOnRowClick Eigenschaft auf true gesetzt ist, so dass RadGrid der SelectedIndexChanged Veranstaltung ordnungsgemäß auf der Serverseite abgefeuert werden.

<ClientSettings Selecting-AllowRowSelect="true" EnablePostBackOnRowClick="true"> 
</ClientSettings> 

Aber wenn Sie Zeilenauswahlbefehl von Client-Seite feuern wollen, dann sollten Sie eine Reihe Click-Ereignis mit JS hinzufügen.

function RowClick(sender, eventArgs) { 
    sender.get_masterTableView().fireCommand("Select", eventArgs.get_itemIndexHierarchical()); 
} 

Dann verknüpfen Sie diese JS-Funktion zu <ClientEvents OnRowClick="RowClick" /> in Ihrem aspx.

0

Sie können RadGrid1.SelectedItems [0] verwenden, um Ihr ausgewähltes Element zu erhalten.

protected void RadGrid1_ItemChanged(object sender, EventArgs e) 
{ 
    var myDataItem = RadGrid1.SelectedItems[0] as GridDataItem; 
    if (myDataItem != null) 
    { 
     var name = myDataItem ["InvoiceId"].Text; 
    } 
} 

Und Woodykiddy hat Recht. Überprüfen Sie Ihr Postback und Ihre Auswahl der zulässigen Zeile.
Und wenn Sie Ajax verwenden vergessen Sie nicht den Ajax-Manager und Panel.