【问题标题】:ASP Gridview that selects multiple rows and retrieves the value选择多行并检索值的 ASP Gridview
【发布时间】:2014-03-07 05:17:01
【问题描述】:

我试图让用户选择我的网格的多行,然后这些选定的值显示在文本框中。我可以在文本框中输入一个值并能够选择一行。如何更改我已经拥有的内容以允许多项选择?我尝试了下面发布的内容,认为添加对象的新实例可以让我在文本框中看到这两个值,但它只是重复第一个选定的值。

protected void dropdeadGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
    GridViewRow row = dropdeadGridView.Rows[e.NewSelectedIndex];
    GridViewRow row1 = dropdeadGridView.Rows[e.NewSelectedIndex];
}
protected void dropdeadGridView_SelectedIndexChanged1(object sender, EventArgs e)
{
    GridViewRow row = dropdeadGridView.SelectedRow;
    GridViewRow row1 = dropdeadGridView.SelectedRow;
    IDTextBox.Text = row.Cells[1].Text + "," + row1.Cells[1].Text;
    loadnumTextBox.Text = row.Cells[2].Text + "," + row1.Cells[2].Text;

}

ASP 代码

<asp:GridView ID="dropdeadGridView" runat="server" Height="300px" 
        Width="650px" BackColor="Black" BorderStyle="Solid" 
        CellPadding="3" Font-Bold="True" ForeColor = "Yellow" 
        onselectedindexchanging="dropdeadGridView_SelectedIndexChanging"
        autogenerateselectbutton="true" selectedindex="0" 
        onselectedindexchanged="dropdeadGridView_SelectedIndexChanged1" >
        <RowStyle HorizontalAlign="Center" />
        <SelectedRowStyle BorderStyle="Inset" BorderColor="Red" ForeColor="Red" />
    </asp:GridView>

【问题讨论】:

  • 如果您想选择多行,我会在 gridview 中添加一个复选框。用户选中这些框,这将指示选择了哪些行。然后用行值填充文本框。
  • @snowYetis 所以复选框而不是选择链接?
  • 我在网上找不到任何关于使用选择链接抓取多行的信息。我不想说这是不可能的,但我知道我已经用复选框做到了这一点。你能发布你的 ASP 代码吗?
  • @snowYetis 是的,请稍等
  • @snowYetis 它已更新

标签: c# asp.net gridview


【解决方案1】:

由于您使用的是 ASP.Net Web 表单,我建议您在其中创建一个放置复选框控件,然后用户单击他们想要选择的行上的复选框。在按钮单击事件后面的代码中,通过查找 checkbox.checked 属性来查找行。然后读取所需的单元格数据并将其附加到您的文本框中。

   <asp:GridView ID="yourGrid" runat="server" AutoGenerateColumns="False" 
                    DataSourceID="YourSource" >
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:CheckBox ID="YourCheckBox" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="Name" HeaderText="Name" />
            <asp:BoundField DataField="ModifiedDate" HeaderText="ModifiedDate" />
            <asp:CommandField ShowEditButton="True" />
        </Columns>
    </asp:GridView>

这里是更新后的代码##

如果你对 JQuery 不满意,那就去吧。

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
GridViewRow gr = (GridViewRow)chk.Parent.Parent;
txtBox.Text = GridView1.DataKeys[gr.RowIndex].Value.ToString();


} 

REVISION - 一个 JQuery 解决方案

但是,我认为根据您的要求执行此操作的最简单方法是使用 JQuery。

首先在您的项目中添加一个 jquery 脚本。如果您的项目还没有最新的脚本,请转到 Jquery.com。在页面标记的头部添加参考。

<script type="text/javascript" src="The source of your JS file"></script>

然后在你的正文末尾写下你的 JQuery。

<script type="text/javascript">
    $(document).ready(function () {
    // Capture the click event by going through the gridview > tablerow > tabledisplay >        `lastly the checkbox - grab the click event.
 $('#GrdViewID' tr td  
 input[id*="chkSelected"]`[type=checkbox]:checked').on('click',function () {
          $('#txtBox').text($(this).closest('tr').find('td').eq(2).text());
     });
</script>

【讨论】:

  • 那么 JQuery 怎么样?
  • 没有付太多钱,但我很想尝试!
  • 这听起来很适合 JQuery。您不必回帖,这将需要几行代码。我会发布一个修订版。给我 1 秒。
  • 没有checkbox1_CheckChanged...只是selectedindexchanged
  • 如果您没有时间紧迫,请抽出时间来学习一下这个关于 JQuery 的快速课程。这是一个很棒的快速教程。 codeschool.com/courses/try-jquery
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多