Telerik RadGridの行データへのアクセス(サーバー側)
質問
Javascriptを使用してtelerik radgridコンポーネントの行を読み取ることは問題ありませんが、ポストバックが発生したときに行データサーバー側にアクセスする方法を見つけることができるようです。私は何年もかけて解決策を探しましたが、運はありませんでした。 どんなポインタでも大歓迎です。
トニー
解決
DataKeyValuesをご覧ください。 OwnerTableViewオブジェクトのプロパティ。特定の行のフィールドを表す値のコレクションにアクセスできます。サイトのユーザーがリンクをクリックしてグリッド内の行を編集すると編集ページに移動するため、EditCommandイベントハンドラーで使用します。クエリ内の特定の行に関する特定の情報を渡す必要があります。文字列。
これが必要なものであることが判明した場合は、このプロパティを使用してどのフィールドを使用可能にするかを定義する必要もあります。これを行うには、グリッドのプロパティシートでMasterTableView.DataKeyNamesプロパティを確認します。基本的に、フィールド名のコンマ区切りリストを指定します。
他のヒント
サーバー側は簡単な部分です:
GridItemCollection gridRows = TestGrid.Items;
foreach (GridDataItem data in gridRows)
{
ItemClass obj = (ItemClass)data.DataItem;
}
私が知らないのはクライアント側の部分です! :[
private Int32 GetID()
{
foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
{
if (dataItem.Selected == true)
{
Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
return ID;
}
}
throw new ArgumentNullException("Id Not found");
}
private Int32 GetID()
{
foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items)
{
if (dataItem.Selected == true)
{
// Int32 ID = (Int32)dataItem.GetDataKeyValue("ID");
Int32 ID =Convert.ToInt32(dataItem.GetDataKeyValue("ID"));
return ID;
}
}
}
//this will work
これは私のために機能し、RadGrid.SelectedItemsコレクションを使用するものです。
protected void LinkButton1_Click(object sender, EventArgs e)
{
List<Guid> OrderIdList = new List<Guid>();
foreach (GridDataItem OrderItem in this.RadGrid1.SelectedItems)
{
OrderIdList.Add(new Guid(OrderItem.GetDataKeyValue("OrderId").ToString()));
}
}
マークアップまたはダイナミックコントロールのページ初期化でコントロールを正しく作成した場合、RadGridは状態を適切に復元します。
データキーから列を保持するように問題のテーブルビューに指示した場合、以下の例のようにデータソースからロードされた初期値にアクセスできます。
protected T GetInitialGridData<T>(GridDataItem item, string uniqueColumnName) {
item.ThrowIfNull("item");
uniqueColumnName.ThrowIfNullOrEmpty("uniqueColumnName");
return (T)item.OwnerTableView.DataKeyValues(gridItem.ItemIndex)(columnName);
}
動的なカスタムテンプレート列を使用していて、現在その状態にある可能性のある値に到達する必要がある場合は、次を使用できます。
protected string GetCustomTextBoxValue(GridDataItem item, string controlID) {
item.ThrowIfNull("item");
controlID.ThrowIfNullOrTrimmedEmpty("controlID");
return ((TextBox)item.FindControl(controlID)).Text;
}