【问题标题】:Editable GridView可编辑的网格视图
【发布时间】:2013-08-22 19:14:10
【问题描述】:

我正在尝试允许编辑 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。

【问题讨论】:

标签: c# asp.net gridview


【解决方案1】:

您需要做几件事才能启用编辑

假设你的数据源是一个 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 个字段,但只允许更新两个字段(会议日期和会议时间)。

【讨论】:

  • 您能否详细说明一下 UpdateParameters?它如何知道我正在处理哪个字段以及如何使用查询中的参数?
  • @rar 您的参数名称将是您正在更新的数据库字段的名称。我添加了一个简单的示例来回答更新时数据源的外观。
【解决方案2】:

要编辑记录,GridView 必须进入 EditMode。网格根据接收到的命令更改模式,在本例中为“编辑”。有关详细信息,请参阅gridview page“数据操作”部分的备注。

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

  1. 在网格上使用AutoGenerateEditButton 属性
  2. 将 CommandField 与 ShowEditButton 一起使用,如其他答案所述
  3. 使用自定义的TemplateField,内部带有LinkButton,如下所示:

<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"

【讨论】:

  • 它将是一个 SQLDataSource。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
相关资源
最近更新 更多