ASP表单不会插入任何值而不是值

时间:2014-09-15 16:49:13

标签: sql asp.net oledb

我使用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字段中输入一个值

任何人都可以理解为什么它没有从下拉框中获取数据?感谢

1 个答案:

答案 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>