2013-06-21 10 views
5

Ich habe ein Radgrid, in dem ich ID-Spalte verstecken. Jetzt möchte ich seinen Wert auf Linkbutton klicken. Wenn Spalte sichtbar ist, funktioniert es gut, aberGet Value der versteckten Spalte von Radgrid Telerik in asp.net

es leeren Wert zeigen, wenn es unsichtbar ist. Mein Code ist

protected void RadGrid1_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e) 
{ 
    if (e.CommandName == "Detail") 
    { 
     GridDataItem dataItm = e.Item as GridDataItem; 

     string value = dataItm["Id"].Text; 
    } 
} 
+1

können Sie Ihren HTML-Code des Gitters bitte – Sora

+0

http://www.telerik.com/forums/breaking-change-hidden-column-cell-text-is-not-perserved-in-viewstate – Chiramisu

Antwort

16

Bitte versuchen Sie es mit dem folgenden Code-Schnipsel.

ASPX

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" 
    OnItemCommand="RadGrid1_ItemCommand"> 
    <MasterTableView DataKeyNames="ID"> 
     <Columns> 
      <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="ID" UniqueName="ID1" HeaderText="ID" Visible="false"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="ID" UniqueName="ID2" HeaderText="ID" Display="false"> 
      </telerik:GridBoundColumn> 
      <telerik:GridTemplateColumn> 
       <ItemTemplate> 
        <asp:Button ID="Button1" runat="server" CommandName="Detail" CommandArgument='<%# Eval("ID") %>' /> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
     </Columns> 
    </MasterTableView> 
</telerik:RadGrid> 

aspx.cs

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    dynamic data = new[] { 
     new { ID = 1, Name ="Name1"}, 
     new { ID = 2, Name = "Name2"}, 
     new { ID = 3, Name = "Name3"}, 
     new { ID = 4, Name = "Name4"}, 
     new { ID = 5, Name = "Name5"} 
    }; 

    RadGrid1.DataSource = data; 

} 

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) 
{ 
    if (e.CommandName == "Detail") 
    { 
     GridDataItem item = e.Item as GridDataItem; 

     string strID = item.GetDataKeyValue("ID").ToString(); // We are able to get ID field value here 
     string strID1 = item["ID1"].Text; // We are NOT able to get ID field value here Because column is Visible false 
     string strID2 = item["ID2"].Text; // We are able to get ID field value here 
     string strCommandArgument = e.CommandArgument.ToString(); // We are able to get ID field value here 

    } 
} 

Bitte verwenden Anzeige Eigenschaft anstelle-von Visible Eigenschaft.

+1

Dies ist der beste Ansatz. Beachten Sie, dass er Visible = "false" anstelle von Display = "false" verwendet. – msigman

1

Ist die Spalte immer unsichtbar? Wenn ja, können Sie die ID in der DataKeyNames Eigenschaft als in setzen:

DataKeyNames="ID" 

und greifen Sie dann über:

var id = (int)dataItm.getDataKeyValue("ID"); 
2

Der einfachste Weg ist, Visible = True und Display = False setzen und Sie sollten in Ordnung sein.

+0

upvote für diesen. ist in der Tat der einfachste Weg und funktioniert perfekt. – ddaniel

Verwandte Themen