【问题标题】:ASP.NET Gridview ButtonsASP.NET Gridview 按钮
【发布时间】:2012-10-14 20:32:09
【问题描述】:

我有一个包含 3 列(CompanyName、Volume、counter)的 Gridview 我希望计数器列是所有按钮,当用户单击按钮时,它会将计数器增加 1。我不知道如何正确设置更新命令。这是我目前所拥有的:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource1" 
        EmptyDataText="There are no data records to display.">
        <Columns>
            <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" 
                SortExpression="CompanyName" />
            <asp:BoundField DataField="Volume" HeaderText="Volume" 
                SortExpression="Volume" />
            <asp:ButtonField DataTextField="counter" HeaderText="counter" 
            ButtonType="button"/>

        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:LiquorStoreConnectionString1 %>" 
        ProviderName="<%$ ConnectionStrings:LiquorStoreConnectionString1.ProviderName %>" 
        SelectCommand="SELECT [CompanyName], [Volume], [counter] FROM [Company]">
    </asp:SqlDataSource>

我需要做的就是每次在该特定行上按下按钮时递增 1。

【问题讨论】:

标签: c# asp.net sql gridview


【解决方案1】:

你可以试试这个:

... UpdateCommand="Update COMPANY SET counter=@Counter +1 WHERE CopmanyName=@Company"
<columns> 
    <asp:BoundField HeaderText="counter" DataField="Counter" />             
</columns>

确保绑定的字段名称正确。 我还没有测试过 this + 1 是否适用于绑定字段。如果没有,那么我们将不得不使用 OnRowCommand 手动更新数据库,然后您可以重新绑定视图并查看更新的计数器。更重要的是,我看不到贵公司的良好主键,因此您可以进行更新...所以我的示例使用的是 CompanyName,这很危险。

【讨论】:

  • 嗨,臭虫!我刚刚使用更新命令 UpdateCommand="Update COMPANY SET counter=@Counter +1 WHERE Id=@Id" 创建了一个名为 Id 的主键,这只是将每一列的行加一。我希望所有计数器行都为零,除非有人单击一个,然后该特定行变为 1。如果这有意义吗?
  • 我认为您可能需要执行 OnRowCommand。在设计模式下单击您的网格视图,然后在网格视图的属性上,您将有一个“闪电”图标。点击这个。如果双击它,您应该会看到“OnRowCommand”,它会在代码中自动为您创建事件。现在您只需要编写一个 SQL 更新命令。您将在“where”子句的参数 (e) 中拥有 RowID(如果已正确绑定)。
  • 我没有“OnRowCommand”我有“RowCommand”但是当我双击它时它给了我protected void GridViewCommandEventHandler(object sender, GridViewCommandEventArgs e){}
  • 这就是你想要的。 e 将具有一些行属性。像 e["COLUMNNAME"] 之类的。您可以在此处手动运行更新命令。
【解决方案2】:

您要更新数据库吗? 您可以在 gridview 行命令中捕获按钮单击事件。 看看下面给出的链接 http://msdn.microsoft.com/en-us/library/bb907626.aspx

【讨论】:

  • 嗨 Karthi,是的,如果可能的话,我希望它在每次点击后更新数据库。
  • 你能让 rowcommand 工作吗?只需创建一个递增值的存储过程并在行命令中调用它
猜你喜欢
  • 1970-01-01
  • 2010-12-03
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
相关资源
最近更新 更多