更新命令问题

时间:2015-11-03 09:30:08

标签: c# asp.net listview

我遇到了更新功能的问题,我正在尝试为我正在构建的群组网站创建。我有代码使用SQL数据源和带编辑功能的列表视图。基本上我在更新表时遇到问题。我只想更新数据库中表中的某些字段,但我只知道如何使用ID作为数据键名更新它们。有人可以帮助我/指导我需要为代码添加什么来更新我想要的字段吗?基本上我只想编辑名称,描述和单位字段。

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:UniString %>"



        SelectCommand="SELECT [module_name], [module_desc], [module_units] 
        FROM [modules] ORDER BY [module_name], [module_desc], [module_units]"

      UpdateCommand="UPDATE [modules] SET [module_name]= @Module_Name, [module_desc]=@Module_Description, 
        [module_units]=@Module_Units"


        >

    <UpdateParameters>
        <asp:Parameter Name="Module_Name" Type="String" />
        <asp:Parameter Name="Module_Description" Type="String" />
        <asp:Parameter Name="Module_Units" Type="Int32" />
    </UpdateParameters>


    </asp:SqlDataSource>

</p>
<asp:ListView ID="ListView1" runat="server" 
    DataSourceID="SqlDataSource1"
    **DataKeyNames= ""**   >


    <AlternatingItemTemplate>
        <span style="">module_name:
        <asp:Label ID="module_nameLabel" runat="server" Text='<%# Eval("module_name") %>' />
        <br />
        module_desc:
        <asp:Label ID="module_descLabel" runat="server" Text='<%# Eval("module_desc") %>' />
        <br />
        module_units:
        <asp:Label ID="module_unitsLabel" runat="server" Text='<%# Eval("module_units") %>' />
        <br />
        <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
<br />
            <br />
            </span>
        </AlternatingItemTemplate>
        <EditItemTemplate>
            <span style="">module_name:
            <asp:TextBox ID="module_nameTextBox" runat="server" Text='<%# Bind("module_name") %>' />
            <br />
            module_desc:
            <asp:TextBox ID="module_descTextBox" runat="server" Text='<%# Bind("module_desc") %>' 
                                        TextMode="MultiLine" Columns="30" Rows="10" />
            <br />
            module_units:
            <asp:TextBox ID="module_unitsTextBox" runat="server" Text='<%# Bind("module_units") %>' />
            <br />
            <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" />
            <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" />
            <br /><br /></span>
        </EditItemTemplate>

我在CS文件上没有后端代码,因为我认为它不需要我也没有添加整个列表视图,因为它很长并且可能不需要显示。我已将**放在键名旁边,因为我认为这是错误的来源。当我在那里有模块名称之类的东西时,我认为它有效,但它将所有内容更新为同名,desciption等。我想单独更改每个列表编辑,使其成为不同的模块名称,描述等。

1 个答案:

答案 0 :(得分:1)

简单地说,你应该

  1. 更改选择并从DB SelectCommand =“SELECT [module_id]
  2. 中选择ID列
  3. 更新更新“更新 [modules] SET [module_name] = @Module_Name, [module_desc] = @ Module_Description,     [module_units] = @ Module_Units,其中[module_id] = @ Module_ID“
  4. 您提及的数据键列设置为“module_id”。
  5. 在列表视图中添加隐藏的列