Javascript を使用して Telerik radgrid コンポーネントの行を読み取ることに問題はありませんが、ポストバックが発生したときに行データ サーバー側にアクセスする方法を見つけることができます。私は解決策を探すのに何年も費やしましたが、運がありません。任意のポインタをいただければ幸いです。
トニー
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.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;
}
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