INSERT INTO IP_LocalAllot(PID, DeptName, StartAddress, EndAddress, AllotDate, Res) VALUES (@T_ID, @T_Name, @StartAddress, @EndAddress, @AllotDate, @Res)
T_ID T_Name是自定义的变量,已经在后台赋值
  string T_ID = Label1.Text.Trim();
  string T_Name = Label2.Text.Trim();  
我直接拽的SQLDataSource控件,在控件里的配置数据源里执行的
GridView连的SQLDataSource,用来实现编辑,插入但是运行时候出错,说INSERT插入语句不能将空值插入到DeptName,但是数据表里貌似不为空,因为我硬性输入数据的时候,ID已经不是连续的了,就是说我测试的时候进入数据记录了,但是没显示出来,不知道哪里的问题,请指教,谢谢

解决方案 »

  1.   

    把aspx页的代码贴上来,帮忙看看,谢谢<asp:SqlDataSource ID="SqlDataSource5" runat="server" 
            ConflictDetection="CompareAllValues" 
            ConnectionString="Data Source=SERVER4;Initial Catalog=ythzh;Persist Security Info=True;User ID=gsyth;Password=%()^@&amp;(" 
            DeleteCommand="DELETE FROM [IP_LocalAllot] WHERE [ID] = @original_ID" 
            InsertCommand="INSERT INTO IP_LocalAllot(PID, DeptName, StartAddress, EndAddress, AllotDate, Res) VALUES (@T_ID, @T_Name, @StartAddress, @EndAddress, @AllotDate, @Res)" 
            OldValuesParameterFormatString="original_{0}" 
            ProviderName="System.Data.SqlClient" 
            SelectCommand="SELECT * FROM [IP_LocalAllot]" 
            
            
            
            UpdateCommand="UPDATE [IP_LocalAllot] SET [PID] = @PID, [DeptName] = @DeptName, [StartAddress] = @StartAddress, [EndAddress] = @EndAddress, [AllotDate] = @AllotDate, [Res] = @Res WHERE [ID] = @original_ID">
            <DeleteParameters>
                <asp:Parameter Name="original_ID" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="PID" />
                <asp:Parameter Name="DeptName" />
                <asp:Parameter Name="StartAddress" Type="String" />
                <asp:Parameter Name="EndAddress" Type="String" />
                <asp:Parameter Name="AllotDate" Type="DateTime" />
                <asp:Parameter Name="Res" Type="String" />
                <asp:Parameter Name="original_ID" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="T_ID" />
                <asp:Parameter Name="T_Name" />
                <asp:Parameter Name="StartAddress" Type="String" />
                <asp:Parameter Name="EndAddress" Type="String" />
                <asp:Parameter Name="AllotDate" Type="DateTime" />
                <asp:Parameter Name="Res" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>
      

  2.   

    SqlDataSource5.UpdateParameters["StartAddress"].Value = "xxxx";应该是这种方法
      

  3.   

    你的@T_Name 参数是怎么赋值的?上面貌似没有这语句啊?
      

  4.   

    在CS页赋值的 
     string T_ID = Label1.Text.Trim();
       string T_Name = Label2.Text.Trim();   
      

  5.   

    一个简单的例子
    <%@ Page Language="C#" EnableViewState="false" AutoEventWireup="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">  
        protected void Button1_Click(object sender, EventArgs e)
        {
            SqlDataSource2.SelectParameters["UserId"].DefaultValue = TextBox1.Text;
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form runat="server">
        <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource2">
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" SelectCommand="select * from Jitar_Article Where UserId=@UserId"
            ConnectionString="Data Source=(local);Password=abc;User ID=abc;Initial Catalog=数据库"
            ProviderName="System.Data.SqlClient">
            <SelectParameters>
                <asp:Parameter Name="UserId" DefaultValue="68" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
        输入用户Id:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="查看" />
        </form>
    </body>
    </html>