2011-12-01 41 views
0

我正在编写一个跟踪截止日期的Web应用程序。有了这个应用程序,你必须能够更新正在保存在SQL DB中的记录。 但是,我的aspx文件中有更新问题。C# - 必须声明标量变量“@ms_id” - 错误

<asp:GridView ID="gv_editMilestones" runat="server" DataSourceID="sql_ds_milestones" 
    CellPadding="4" ForeColor="#333333" GridLines="None" Font-Size="Small" 
    AutoGenerateColumns="False" DataKeyNames="id" Visible="false" 
    onrowupdated="gv_editMilestones_RowUpdated" 
    onrowupdating="gv_editMilestones_RowUpdating" 
    onrowediting="gv_editMilestones_RowEditing"> 
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
    <Columns> 
     <asp:CommandField ShowEditButton="True" /> 
     <asp:BoundField DataField="id" HeaderText="id" SortExpression="id" 
      ReadOnly="True" Visible="false"/> 
     <asp:BoundField DataField="ms_id" HeaderText="ms_id" 
      SortExpression="ms_id" ReadOnly="True"/> 
     <asp:BoundField DataField="ms_description" HeaderText="ms_description" 
      SortExpression="ms_description"/> 
<%--  <asp:BoundField DataField="ms_resp_team" HeaderText="ms_resp_team" 
      SortExpression="ms_resp_team"/>--%> 
     <asp:TemplateField HeaderText="ms_resp_team" SortExpression="ms_resp_team"> 
      <ItemTemplate> 
       <%# Eval("ms_resp_team") %> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:DropDownList ID="DDL_ms_resp_team" runat="server" 
        DataSourceID="sql_ds_ms_resp_team" DataTextField="team_name" 
        DataValueField="id"> 
        <%--SelectedValue='<%# Bind("ms_resp_team") %>'--%> 
       </asp:DropDownList> 
      </EditItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="ms_focal_point" HeaderText="ms_focal_point" 
      SortExpression="ms_focal_point" /> 
     <asp:BoundField DataField="ms_exp_date" HeaderText="ms_exp_date" 
      SortExpression="ms_exp_date" DataFormatString="{0:d}"/> 
     <asp:BoundField DataField="ms_deal" HeaderText="ms_deal" 
      SortExpression="ms_deal" ReadOnly="True"/> 
     <asp:CheckBoxField DataField="ms_active" HeaderText="ms_active" 
      SortExpression="ms_active"/> 
    </Columns> 
    <FooterStyle BackColor="#CCCC99" /> 
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
    <AlternatingRowStyle BackColor="White" /> 
    <EditRowStyle BackColor="#999999" /> 
</asp:GridView> 
<asp:SqlDataSource ID="sql_ds_milestones" runat="server" 
    ConnectionString="<%$ ConnectionStrings:testServer %>" 
    SelectCommand="SELECT [id] 
          ,[ms_id] 
          ,[ms_description] 
          ,(SELECT [team_name] FROM [NSBP].[dbo].[tbl_teams] as teams 
          WHERE milestones.[ms_resp_team] = teams.[id]) as 'ms_resp_team' 
          ,[ms_focal_point] 
          ,[ms_exp_date] 
          ,(SELECT [deal] FROM [NSBP].[dbo].[tbl_deals] as deals 
          WHERE milestones.[ms_deal] = deals.[id]) as 'ms_deal' 
          ,[ms_active] 
          FROM [NSBP].[dbo].[tbl_milestones] as milestones" 
    UpdateCommand="UPDATE [NSBP].[dbo].[tbl_milestones] 
        SET [ms_description] = @ms_description 
        ,[ms_focal_point] = @ms_focal_point 
        ,[ms_active] = @ms_active 
        WHERE [ms_id] = @ms_id"> 
    <UpdateParameters> 
     <asp:Parameter Name="ms_description" Type="String" /> 
<%--   <asp:Parameter Name="ms_resp_team" Type="String" />--%> 
     <asp:Parameter Name="ms_focal_point" Type="String" /> 
     <asp:Parameter Name="ms_exp_date" Type="DateTime" /> 
     <asp:Parameter Name="ms_active" Type="Boolean" /> 
<%--   <asp:Parameter Name="ms_id" Type="String" />--%> 
    </UpdateParameters> 
</asp:SqlDataSource> 

你可以看到我的完整的GridView结构+绑定到这个GridView的数据源。 在我的代码隐藏文件中我的onrowupdating函数中没有写入任何内容。

THX提前

回答

0

你是你的SQL语句的where子句中使用@ms_id,但设置一个<asp:Parameter ... />被注释掉行。尝试取消注释:

<%-- <asp:Parameter Name="ms_id" Type="String" /> --%> 

,然后再试一次

+0

好吧,确实是这个问题:) Thx!此外,更新没有做它应该做的事情。基本上我希望他更新字段:ms_description,ms_focal_point,ms_exp_date和ms_active!在我的另外两个编辑页面中,我做的或多或少都是相同的操作,但是使用这个编辑页面不会执行更新。有任何想法吗? – KevinP

0

这条线;

<%--   <asp:Parameter Name="ms_id" Type="String" />--%> 

似乎被注释掉,并在SQL where子句中使用。