2013-06-21 9 views
5

私はID列を隠す放射状グリッドを持っています。今、私はリンクボタンクリックでその価値を得たいと思っています。列が表示されている場合は正常に機能しますが、表示されていない場合はブランク値を表示します。asp.netのradgrid telerikの非表示列の値を取得

私のコードは

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

グリッドのHTMLコードを投稿してください。 – Sora

+0

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

答えて

16

以下のコードを試してみてください。

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 

    } 
} 

場所-の可視プロパティに表示プロパティを使用してください。

+1

これは最高のアプローチ。 Display = "false"の代わりにVisible = "false"を使用していることに注意してください。これのために – msigman

1

です。列は常に見えませんか?もしそうなら、あなたは同様にDataKeyNamesプロパティにIDを入れることができます。

DataKeyNames="ID" 

そして経由でアクセスします。

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

最も簡単な方法は、Visible = trueとDisplay = falseを設定することです。

+0

upvote。確かに最も簡単な方法であり、完璧に動作します。 – ddaniel

関連する問題