可编辑的GridView

时间:2013-08-22 19:14:10

标签: c# asp.net gridview

我正在尝试允许编辑GridView中的项目(DataSource是数据库连接)。我找到的每个例子都有复杂的例子。我想知道我需要做的最简单的更改是为了允许在GridView中编辑项目。

换句话说,如何修改以下内容以允许编辑?

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSourceWS">
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
            <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
            <asp:BoundField DataField="NAME" HeaderText="NAME" SortExpression="NAME" />
            <asp:BoundField DataField="ACCESS_TO" HeaderText="ACCESS_TO" SortExpression="ACCESS_TO" />
        </Columns>
    </asp:GridView>

显然我也需要添加代码,但我不知道如何从这开始。

编辑:我以为我已经指定了,但我没有 - 这是一个SQLDataSource。

2 个答案:

答案 0 :(得分:0)

要启用编辑,您需要做几件事

假设您的数据源是SQLDataSource

1)在girdview列中添加命令字段

<asp:CommandField ButtonType="Button" EditText="Edit" ShowEditButton="true"/>

2)向数据源添加更新命令

<asp:SqlDataSource ID="SqlDataSourceWS" runat="server" 
    ConnectionString="<%$ Connection String %>" 

    SelectCommand="  SELECT COMMAND HERE " 
    UpdateCommand="  UPDATE COMMAND HERE ">
    <UpdateParameters>
        <asp:Parameter Name="" />
        <asp:Parameter Name="" />
    </UpdateParameters>
</asp:SqlDataSource>

有关命令字段以及如何使用它的更多信息,请查看Microsoft Developer Network Documentation

修改

这是一个非常简单的SQLDatasource示例,它显示了如何更新项目

   <asp:SqlDataSource ID="sqlMeetings" runat="server" 
            ConnectionString="<%$ connection %>" 

            SelectCommand="SELECT  [meetingid]
                              ,[groupname]
                              ,[meetingtime]
                              ,[meetingdate]
                          FROM [DCMS].[dbo].[tbl_meetings] " 
            UpdateCommand="UPDATE tbl_meetings 
                           SET meetingdate = @meetingdate, meetingtime = @meetingtime 
                            WHERE meetingid = @meetingid">
            <UpdateParameters>
                <asp:Parameter Name="meetingdate" />
                <asp:Parameter Name="meetingtime" />
            </UpdateParameters>
        </asp:SqlDataSource>

从上面的示例中,您可以看到我从数据库中选择了3个字段,但只允许更新两个字段(会议日期和会议时间)。

答案 1 :(得分:0)

要编辑记录,GridView必须输入EditMode。网格根据它接收的命令改变模式,在这种情况下是“编辑”。有关详细信息,请参阅gridview page,“数据操作”部分的备注。

基本上有三种方法可以触发命令并在网格上进入编辑模式:

  1. 使用网格上的AutoGenerateEditButton属性
  2. 使用CommandField与ShowEditButton一样使用
  3. 中的其他答案
  4. 使用内置TemplateField的自定义LinkButton,如下所示:
  5. <Columns>
    ...
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton runat="server" Text="Edit" CommandName="Edit" />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:LinkButton runat="server" Text="Update" CommandName="Update" />
                <asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" />
            </EditItemTemplate>
        </asp:TemplateField>
    ...
    </Columns>
    

    <Columns> ... <asp:TemplateField> <ItemTemplate> <asp:LinkButton runat="server" Text="Edit" CommandName="Edit" /> </ItemTemplate> <EditItemTemplate> <asp:LinkButton runat="server" Text="Update" CommandName="Update" /> <asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" /> </EditItemTemplate> </asp:TemplateField> ... </Columns>

    之后,它将取决于您使用的DataSource控件。例如,使用EntityDataSource,您需要做的就是设置EnableUpdate =“true”