我使用Visual Studio Express 2012尝试创建一个更新Access DB的表单。
我在顶部使用以下脚本:
<script runat="server">
private void NewCreate (object source, EventArgs e) {
All.Insert();
}
</script>
数据源和参数:
<asp:SqlDataSource ID="All" runat="server"
ConnectionString="<%$ ConnectionStrings:Database %>"
ProviderName="<%$ ConnectionStrings:Database.ProviderName %>"
SelectCommand="SELECT * FROM [All]"
InsertCommand="INSERT INTO [All] (UserRef,MgrRef,SiteRef,Date) VALUES (@User,@Mgr,@Site,@Date)">
<insertparameters>
<asp:formparameter name="Site" formfield="SiteDropDown" />
<asp:formparameter name="Mgr" formfield="MgrDropDown" />
<asp:formparameter name="User" formfield="UserDropDown" />
<asp:formparameter name="Date" formfield="DatePicker" />
</insertparameters>
</asp:SqlDataSource>
其中一个领域:
<asp:DropDownList ID="UserDropDown" runat="server"
DataSourceID="UserList"
DataTextField="UserName"
DataValueField="UserRef">
</asp:DropDownList>
它的数据来源:
<asp:SqlDataSource ID="UserList" runat="server"
ConnectionString="<%$ ConnectionStrings:Database %>"
ProviderName="<%$ ConnectionStrings:Database.ProviderName %>"
SelectCommand="SELECT * FROM [Users] WHERE [Users].UserTypeRef=1">
还有另外4个字段,但是当我提交时,它会插入空数据。
如果我将所需的设置转为&#34;是&#34;在Access中(就像我原来的那样)我收到错误说&#34;你必须在[All] .UserRef字段中输入一个值
任何人都可以理解为什么它没有从下拉框中获取数据?感谢
答案 0 :(得分:0)
由于您正在使用母版页,因此表单上的控件将在其名称前加上前缀。当他们回发到服务器而不是SiteDropDown
时,名称将类似于ctl00$ContentPlaceholder1$SiteDropDown
。当FormParameter
在名为SiteDropDown
的发布数据中查找条目时,它无法找到。
最简单的解决方案是将<asp:FormParameter />
tags替换为<asp:ControlParameter />
tags:
<asp:SqlDataSource ID="All" runat="server"
ConnectionString="<%$ ConnectionStrings:Database %>"
ProviderName="<%$ ConnectionStrings:Database.ProviderName %>"
SelectCommand="SELECT * FROM [All]"
InsertCommand="INSERT INTO [All] (UserRef,MgrRef,SiteRef,Date) VALUES (@User,@Mgr,@Site,@Date)">
<insertparameters>
<asp:ControlParameter
Name="Site"
ControlID="SiteDropDown"
PropertyName="SelectedValue"
/>
<asp:ControlParameter
Name="Mgr"
ControlID="MgrDropDown"
PropertyName="SelectedValue"
/>
<asp:ControlParameter
Name="User"
ControlID="UserDropDown"
PropertyName="SelectedValue"
/>
<asp:ControlParameter
Name="Date"
ControlID="DatePicker"
/>
</insertparameters>
</asp:SqlDataSource>