ASP.NETダイナミックデータで使用される「Edit.aspx」デフォルトページテンプレートを変更し、いくつかのコントロールを追加します。私はDetailsDataSource.GetTable().EntityType
を見て編集中のオブジェクトのタイプを見つけることができますが、実際のオブジェクト自体をどのように見ることができますか?また、オブジェクトのプロパティを変更して、データコンテキストに変更を送信するよう指示することはできますか?ダイナミックデータで編集中のオブジェクト/行へのアクセス
3
A
答えて
1
あなたは既に解決策を見つけたかもしれませんが、私はこれについて私の経験を共有したいと思います。
それは素晴らしいピタと判明しましたが、私は編集行を取得することができました。 DetailsDataSource WhereParametersを抽出して、実行時にクエリを作成する必要がありました。
以下のコードは、単一の主キーを持つテーブルで動作します。あなたは複合キーを持っている場合は、私が推測する、それは修正が必要になります:
Parameter param = null;
foreach(object item in (DetailsDataSource.WhereParameters[0] as DynamicQueryStringParameter).GetWhereParameters(DetailsDataSource)) {
param = (Parameter)item;
break;
}
IQueryable query = DetailsDataSource.GetTable().GetQuery();
ParameterExpression lambdaArgument = Expression.Parameter(query.ElementType, "");
object paramValue = Convert.ChangeType(param.DefaultValue, param.Type);
Expression compareExpr = Expression.Equal(
Expression.Property(lambdaArgument, param.Name),
Expression.Constant(paramValue)
);
Expression lambda = Expression.Lambda(compareExpr, lambdaArgument);
Expression filteredQuery = Expression.Call(typeof(Queryable), "Where", new Type[] { query.ElementType }, query.Expression, lambda);
var WANTED = query.Provider.CreateQuery(filteredQuery).Cast<object>().FirstOrDefault<object>();
0
それがDDオブジェクトの場合は、FieldTemplateUserControl.FindFieldTemplate(controlId)を使用することができるかもしれません。次に、必要に応じてデータを操作するためにITextControlとしてキャストできます。
そうでない場合、子コントロールを見つけるために、この拡張メソッドを使用してみてください:私は別の解決策を見つけた
public static T FindControl<T>(this Control startingControl, string id) where T : Control
{
T found = startingControl.FindControl(id) as T;
if (found == null)
{
found = FindChildControl<T>(startingControl, id);
}
return found;
}
0
、他のものは動作しませんでした。
私の場合は、/ CustomPages/Devices/
にあるEdit.aspxをコピーしました。デバイスは、このカスタム動作が必要なテーブルの名前です。
Edit.aspxでこれを追加 - > Page_Init()
DetailsDataSource.Selected += entityDataSource_Selected;
Edit.aspxでこれを追加します。
protected void entityDataSource_Selected(object sender, EntityDataSourceSelectedEventArgs e)
{
Device device = e.Results.Cast<Device>().First();
// you have the object/row being edited !
}
ちょうどあなた自身のテーブル名にデバイスを変更します。
関連する問題
- 1. ダイアログボックス - 編集中の値へのアクセスの問題
- 2. ASP.NETダイナミックデータのテーブルの編集を許可しない
- 3. 編集、編集、テキストファイルへのマップ
- 4. 編集JavaScriptのオブジェクト
- 5. シェアポイントブレッドクラムトレイル編集中
- 6. 編集中php.ini
- 7. c# - 別のクラスから実行中のオブジェクト参照へのアクセス
- 8. JavaScriptで編集された隠し入力値へのアクセス
- 9. ASP.NETダイナミックデータ:特定の行のみにアクセスするアクセス
- 10. 永続オブジェクトの編集
- 11. Jquery - オブジェクトのパラメータを編集
- 12. 行の編集 - プロトタイプ
- 13. 編集オブジェクトwhile animating
- 14. 編集中にNSTableViewへの更新を防止する
- 15. jqGrid行編集カスタム編集アクションツールチップ
- 16. slickgridの編集可能な行と編集不可能な行
- 17. 編集中のファイルの名前
- 18. tableModeで重複行を編集し、元の行も編集します
- 19. グリッドビューの行を編集
- 20. 行編集イベントハンドラの問題
- 21. CoreData編集/上書きオブジェクト
- 22. 複数のHTMLページへの編集
- 23. C#フォームライブラリの編集フォームへのリンク
- 24. 編集中のJQGrid投稿データ
- 25. JSファイルを編集中のIntellisense
- 26. アクセスをロック共有モード - レポートの編集
- 27. デバッグ中に編集できるPowerShell IDE
- 28. Jsonオブジェクトへのアクセス
- 29. 編集ボタンで行編集イベントが発生しないをクリック
- 30. UITableViewスライドが編集可能な行で編集できない行Xcode iPhone
いつ実際のオブジェクトにアクセスしようとしていますか? – RSolberg
使用できるDataBoundイベントはありますか? – hunter