none
在gridview中显示隐藏删除列 RRS feed

  • 问题

  • 用gridview和sqldatasource组合的默认功能实现数据的添加修改删除。在修改数据时想要实现这样的效果:查看状态下每条记录都有编辑和删除这2列,如果对某条记录做编辑时,想把该记录的删除列隐藏起来,而其他非更改行的删除列正常显示,并且记录更改完毕或取消更改后,被隐藏的删除列又能看见。

    请问这种功能的代码如何写。

    2011年1月10日 4:41

答案

  • 给GridView添加一个CommandField就可以了

      <asp:GridView runat="server" ID="gv" AutoGenerateColumns="False" 
      DataKeyNames="ID" DataSourceID="SqlDataSourceDemo" EnableModelValidation="True">
        <Columns>
          <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
            ReadOnly="True" SortExpression="ID"></asp:BoundField>
          <asp:BoundField DataField="Content" HeaderText="Content" 
            SortExpression="Content"></asp:BoundField>
          <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
            ShowInsertButton="True"></asp:CommandField>
        </Columns>
    </asp:GridView>
      <asp:SqlDataSource runat="server" ID="SqlDataSourceDemo" 
      ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
      DeleteCommand="DELETE FROM [DemoTable] WHERE [ID] = @ID" 
      InsertCommand="INSERT INTO [DemoTable] ([Content]) VALUES (@Content)" 
      SelectCommand="SELECT * FROM [DemoTable]" 
      UpdateCommand="UPDATE [DemoTable] SET [Content] = @Content WHERE [ID] = @ID">
        <DeleteParameters>
          <asp:Parameter Name="ID" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
          <asp:Parameter Name="Content" Type="String" />
        </InsertParameters>
        <UpdateParameters>
          <asp:Parameter Name="Content" Type="String" />
          <asp:Parameter Name="ID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
    

     

    2011年1月10日 11:25

全部回复

  • 参考

    我现在没环境,稍后写个例子

    2011年1月10日 8:25
  • 给GridView添加一个CommandField就可以了

      <asp:GridView runat="server" ID="gv" AutoGenerateColumns="False" 
      DataKeyNames="ID" DataSourceID="SqlDataSourceDemo" EnableModelValidation="True">
        <Columns>
          <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
            ReadOnly="True" SortExpression="ID"></asp:BoundField>
          <asp:BoundField DataField="Content" HeaderText="Content" 
            SortExpression="Content"></asp:BoundField>
          <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
            ShowInsertButton="True"></asp:CommandField>
        </Columns>
    </asp:GridView>
      <asp:SqlDataSource runat="server" ID="SqlDataSourceDemo" 
      ConnectionString="<%$ ConnectionStrings:testConnectionString %>" 
      DeleteCommand="DELETE FROM [DemoTable] WHERE [ID] = @ID" 
      InsertCommand="INSERT INTO [DemoTable] ([Content]) VALUES (@Content)" 
      SelectCommand="SELECT * FROM [DemoTable]" 
      UpdateCommand="UPDATE [DemoTable] SET [Content] = @Content WHERE [ID] = @ID">
        <DeleteParameters>
          <asp:Parameter Name="ID" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
          <asp:Parameter Name="Content" Type="String" />
        </InsertParameters>
        <UpdateParameters>
          <asp:Parameter Name="Content" Type="String" />
          <asp:Parameter Name="ID" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
    

     

    2011年1月10日 11:25
  • 我觉得你可以用js来很轻松的完成这样的功能,当在点击编辑的时候,去找到删除这列,然后hide,当保存或取消时在调用show。


    I am fish.
    2011年1月11日 1:38
  • 我刚接触时间不长,能帮我写出js命令么
    2011年1月15日 0:36