Detailsview templatefield映射到ObjectDataSource?

时间:2015-05-28 11:58:31

标签: asp.net web sqldatasource objectdatasource detailsview

我需要帮助才能理解将TemplateFields映射或关联到ObjectDataSource的正确方法。我在这里只展示了一个(很多)模板定义:

our

ObjectDataSource和更新参数是:

my @prefixes   = ("one", "two", ..., "twenty");
my @suffixes   = ("1", "2", ..., "50");
my $globalvars = "";
for my $suffix (@suffixes) {
    for my $prefix (@prefixes) {
        # option 1 -- remainder of #1 outside of loop
        # NOTE: 1.a (no comma); 1.b (include comma between vars)
        $globalvars .= "\$$prefix\_$suffix, ";

        # option 2
        eval "use vars qw(\$$prefix\_$suffix)";

        # option 3
        my $g = "$prefix\_$suffix";
        eval ("use vars qw(\$$g)");

        # option 4
        eval ("our \$$g");
    }
}

# option 1.a
use vars qw($globalvars);
# or option 1.b
my (eval "$globalvars");
:
:
:
# now use them as global variables
if ($one_1 eq ...) {
    if ($one_10) {

我不清楚如何从templatefield文本框(txtFirstName)到UpdateParameter“p_FirstName”进行映射?

在我正在使用的现有代码中,我看到了ObjectDataSource_Updating() - 事件,它将一系列DVW.FindControl()值分配/设置为

    <asp:TemplateField HeaderText="First Name" SortExpression="cFIRSTNAME">
    <ItemTemplate>
        <asp:Label ID="lblValFirstName" runat="server" Text='<%# Eval("cFIRSTNAME") %>' style="font-weight: bold;" ></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="txtFirstName" runat="server" Text='<%# Bind("cFIRSTNAME") %>' MaxLength="20"></asp:TextBox>
    </EditItemTemplate>
    <InsertItemTemplate>
        <asp:TextBox ID="txtFirstName" runat="server" Text='<%# Bind("cFIRSTNAME") %>' MaxLength="20"></asp:TextBox>
    </InsertItemTemplate>
   </asp:TemplateField>

问题?

这是在ObjectDataSource_Updating() - 事件中还是在DetailsView_Updtaing()中完成的 - 事件 - 或 - 通过声明aspx代码?

或如何?

这样做的最佳方式是什么?

命名textbox-ID和参数名称会简化代码吗?

我假设提供的解决方案与SqlDataSource“相似”或相同 - 请确认?

提前致谢...约翰

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并且不确定如何将文本框映射到params,因为在执行SQL跟踪时会传递NULL参数值。最后,我设置参数名称以匹配Text属性bind中的值。

<UpdateParameters> <asp:Parameter Name="my_field" Type="String" Direction="Input" /> ...

<asp:TextBox Text='<%# Bind("my_field") %>'...