none
如何改善GridView的“编辑”功能? RRS feed

  • 问题

  •     GridView控件自带了“编辑”功能,然而我的SQL数据库中的表,字段都很多,往往是排成长长的一排,GridView的编辑功能已经不合适。

        因此我想改进“编辑”功能,我想设计成  点击某一行的 “编辑” 键,就能弹出一个窗口,该窗口根据我的排版显示该行的全部内容。并且,我的数据表中还有图像类型的数据,要设计出点击某个按钮,又能弹出该图像的功能。

        想问问大家,以上功能是用什么控件能最科学的实现呢?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月23日 3:53

全部回复

  • 可以试试jquery的一些控件,比如:http://www.jqwidgets.com/

    博客:http://blog.fwhyy.com

    2012年10月23日 4:14
  • DetailsView 就可以不在一行显示

    http://msdn.microsoft.com/en-us/library/ms972814.aspx


    【孟子E章】

    2012年10月23日 5:04
    版主
  • 3Q!    昨天我给您发邮件了!不知道您收到了没有!并且我也在帖子  http://social.msdn.microsoft.com/Forums/zh-CN/295/thread/3ee68065-1040-4121-8b17-d298293fee21  做了相应的更新

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月23日 5:12
  • 这个DetailsView 似乎不错!您的提示有中文的么?全英文而且没合适的翻译!

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月23日 5:14
  • 中文的

    http://msdn.microsoft.com/zh-cn/library/sdba1d59%28VS.80%29.aspx

    http://developer.51cto.com/art/200907/139518.htm


    【孟子E章】

    2012年10月23日 7:38
    版主
  • 感谢您的提示!我满怀希望的把程序照做了一遍,发现这只是GridView和DetailsView的一个非常简单的联动演练例子!达不到我希望的样子! 我想把它设计成点击 GridView 某一行 前面的“编辑”链接,就跳出这一行的DetailsView窗口。我想,这个功能的关键应该就是一个同页传参数 :把GridView的某一行的主键值作为参数传到DetailsView,在DetailsView中显示明细并可以修改!

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月23日 8:09
  • 在新窗口里面也可以的啊。传id过去,其他的绑定方法应该是相同的

    也就是修改

    <asp:SqlDataSource ID="customerDetailsDataSource"
                Runat="server"
                SelectCommand="SELECT [CompanyName], [ContactName],
                  [ContactTitle], [Address], [City], [Region], [PostalCode],
                  [Country], [Phone], [Fax], [CustomerID] FROM [Customers]"
                ConnectionString="<%$ ConnectionStrings:NWConnectionString %>"
                   FilterExpression="CustomerID='{0}'">
                <FilterParameters>
                    <asp:ControlParameter Name="CustomerID" DefaultValue="-1"
                       Type="String" ControlID="customerGridView"
                        PropertyName="SelectedValue"></asp:ControlParameter>
                </FilterParameters>
            </asp:SqlDataSource>

    这里面的取参数的地方

    如果是弹出窗口,那就可以自己设计显示的样式了。把数据取出来,放到输入框里面,提交更新


    【孟子E章】



    2012年10月23日 8:12
    版主
  • 我尝试做了个GridView和DetailsView联动的页面,点击GridView的“选取”,就可以出现DetailsView的界面:

        下面是代码,我遇到了两个问题:

    问题1:我修改了DetailsView后,GridView的数据不能即时显示更新后的效果,也就是DetailsView上修改了数据,GridView还是显示老数据,要下一次打开GridView才能显示更新后的效果。

    问题2:DetailsView每次都是从页面的顶部出现,实在不方便。我想改造成能在当前页面弹出一个DetailsView窗口,当我在这个DetailsView窗口更新完数据后,点击DetailsView最下面的“更新”或“删除”键,便能保存结果并关闭DetailsView窗口。这个这个功能对于我来说太难了,完全不知道从何入手!

        我是菜鸟,请各位帮忙看看!谢谢

    --------------------------前台代码--------------------------

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            
        
            <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
                DataKeyNames="EmployeeID" DataSourceID="SqlDataSource_DetaisView" Height="50px" 
                Width="125px">
                <Fields>
                    <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" 
                        InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
                    <asp:BoundField DataField="LastName" HeaderText="LastName" 
                        SortExpression="LastName" />
                    <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
                        SortExpression="FirstName" />
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
                        ShowInsertButton="True" />
                </Fields>
            </asp:DetailsView>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="EmployeeID" DataSourceID="SqlDataSource_GridView">
                <Columns>
                
                    <asp:TemplateField ShowHeader="False">
                        <ItemTemplate>
                        <asp:LinkButton ID="btn_Select" runat="server" CausesValidation="False" 
                         CommandName="Select" Text="选取"></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                    
                    <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" 
                        InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
                        
                    <asp:BoundField DataField="LastName" HeaderText="LastName" 
                        SortExpression="LastName" />
                        
               </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource_DetaisView" runat="server" 
                ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
                DeleteCommand="DELETE FROM [Employees] WHERE [EmployeeID] = @EmployeeID" 
                InsertCommand="INSERT INTO [Employees] ([LastName], [FirstName], ) VALUES (@LastName, @FirstName)  " 
                SelectCommand="SELECT [EmployeeID], [LastName], [FirstName] FROM [Employees]  WHERE [EmployeeID] = @EmployeeID" 
                
                
                UpdateCommand="UPDATE [Employees] SET [LastName] = @LastName, [FirstName] = @FirstName WHERE [EmployeeID] = @EmployeeID">
                <SelectParameters>
                    <asp:ControlParameter ControlID="GridView1" Name="EmployeeID" 
                        PropertyName="SelectedValue" />
                </SelectParameters>
                <DeleteParameters>
                    <asp:Parameter Name="EmployeeID" Type="Int32" />
                </DeleteParameters>
                <UpdateParameters>
                    <asp:Parameter Name="LastName" Type="String" />
                    <asp:Parameter Name="FirstName" Type="String" />
                    <asp:Parameter Name="EmployeeID" Type="Int32" />
                </UpdateParameters>
                <InsertParameters>
                    <asp:Parameter Name="LastName" Type="String" />
                    <asp:Parameter Name="FirstName" Type="String" />
                </InsertParameters>
            </asp:SqlDataSource>
            <asp:SqlDataSource ID="SqlDataSource_GridView" runat="server" 
                ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
                
                SelectCommand="SELECT [EmployeeID], [LastName] FROM [Employees]">
            </asp:SqlDataSource>
        
        </div>
        </form>
    </body>
    </html>


    2012年10月24日 4:07