【问题标题】:C# Gridview disable onRowCommand postbackC# Gridview 禁用 onRowCommand 回发
【发布时间】:2020-02-21 18:04:50
【问题描述】:

我希望能够在我的网格视图中选择一行或多行,以便能够将多行数据存储在一个对象中,然后使用对象列表执行我需要的任何操作。

在 ASP 代码中,我有一个标准的 gridview 和一个带有 ItemTemplate 的 TemplateField,我已经放置了我的按钮。命令名称是 Switch(这在 C# 中是相关的)。下面是我的 templateField 代码(我试过 AutoPostBack="False" 在这种情况下不起作用)

<asp:TemplateField>
    <ItemTemplate>
        <asp:Button CssClass="buttonStuff" Text="Switch" runat="server" CommandName="Switch" CommandArgument="<%# Container.DataItemIndex %>" AutoPostBack="False" />
    </ItemTemplate>
</asp:TemplateField>

现在,当在任意行上单击 Switch 按钮时,我们会获取正确的行索引并在 C# 中获取我们的值,代码如下:

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{          
        if (e.CommandName == "Switch")
        {
           //Determine the RowIndex of the Row whose Button was clicked.
           int rowIndex = Convert.ToInt32(e.CommandArgument);

           //Reference the GridView Row.
           GridViewRow row = GridView2.Rows[rowIndex];

            //Perform what needs to do done
        }
    }

现在,我已经获取了正确的值,并且可以为单击一个按钮执行我需要做的事情,但问题是,我不能只选择多行而是只选择一个,因为当我单击按钮一次。

我相信理想情况下,在这种情况下,我想禁用此自动回发并自己手动添加。

任何建议将不胜感激,谢谢

【问题讨论】:

  • 将 DataKey 添加到您的 GridView,以便您可以轻松识别行的对象。为每一行添加一个复选框,然后将您的按钮放在 GridView 之外...单击按钮时,您循环遍历每一行,找到该行的 Checkbox 控件并查看它是否被选中....如果是,抓住DataKey,得到你需要的对象。
  • 这听起来很有希望,你有一个粗略的例子吗?
  • 感谢您的想法和帮助,我回答了自己的问题并链接了有关此类事情的便捷指南。感谢您的想法

标签: c# asp.net .net gridview


【解决方案1】:

我使用复选框找到了解决问题的好方法,下面的链接是我使用的。

https://www.c-sharpcorner.com/UploadFile/009464/use-checkbox-inside-gridview-in-Asp-Net/

【讨论】:

  • 很高兴听到这个消息!当我提出“自己做一些研究”的想法时,我并不是想无礼——但这是最好的学习方式。为某人指明正确的方向比为他们做事要好。
  • 哦,不,不,你帮了忙,并不粗鲁,我需要一个新鲜的想法。谢谢,现在我知道如何更好地使用 Gridviews 了:D,谢谢 John。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多