我需要帮助才能理解将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“相似”或相同 - 请确认?
提前致谢...约翰
答案 0 :(得分:0)
我遇到了类似的问题,并且不确定如何将文本框映射到params,因为在执行SQL跟踪时会传递NULL参数值。最后,我设置参数名称以匹配Text属性bind中的值。
<UpdateParameters>
<asp:Parameter Name="my_field" Type="String" Direction="Input" />
...
<asp:TextBox Text='<%# Bind("my_field") %>'...