Javascriptを使用してtelerikradgridコンポーネントの行を読み取ることに問題はありませんが、ポストバックが発生したときに行データサーバー側にアクセスする方法を見つけることができるようです。私は解決策を探して何年も過ごしましたが、運がありません。どんなポインタでも大歓迎です。
トニー
OwnerTableViewオブジェクトの DataKeyValues プロパティを確認すると、特定の行のフィールドを表す値のコレクションにアクセスできます。私のサイトのユーザーがリンクをクリックしてグリッド内の行を編集すると編集ページに移動し、クエリ内の特定の行に関する特定の情報を渡す必要があるため、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");
}
動的コントロールのマークアップまたはページ初期化でコントロールを正しく作成した場合、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;
}
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()));
}
}