ASP.NET DetailView InsertItemTemplate

时间:2011-09-05 11:05:02

标签: asp.net insert

我的DeatilView控件中定义了一个InsertItemTemplate。在此模板中,我有许多用户填写的字段和一些自动填充的字段,用户无法更改它们。这些值来自存储在会话中的对象 代码如下所示:(我只提及必要的部分,如果您需要更多信息请告诉我)

<asp:DetailView ... DataSourceID="MyDataSource" ...>
  <Fields>
    ...
    <InsertItemTemplate>
      // These are the fields filled by the system
      <asp:Label ... Text='<%# some value from session object %>' />
      <asp:Label ... Text='<%# some value from session object %>' />
      // some textboxes here that user fills,
      //they use Bind("some data source value here") to send their data to database
      ...
    </InsertItemTemplate>
    ...
  </Fields>
</asp:DetailView>

现在问题出在我需要将值实际插入数据库的位置 文本框值发送正常,但由于我没有绑定标签值,因此它们不会发送到DataSource。所以我问怎么做?

  • 我找到的另一种方法是将DefaultValue传递给DataSet 相应的InsertParameter,但我不知道如何填充该区域 从Session获得它的价值。
  • 另一种方法是设置参数值(非默认值) 从Session开始,这是可能的,但这只是支持 直接在Session中的值,我传递的值是 存储在Session中的对象内的属性。有没有 除了在Session中存储值之外,修复此问题的方法 直接

2 个答案:

答案 0 :(得分:0)

您使用的是什么类型的DataSource?我需要知道它,因为根据数据源的类型,几乎没有办法从会话中获取参数。

答案 1 :(得分:0)

在插入数据之前调用

detailView_ItemInserting(object sender, DetailsViewInsertEventArgs e),您可以在此事件中使用detailView.FindControl方法来访问Label控件。