【问题标题】:OnRowDataBound click event open another gridviewOnRowDataBound 点击事件打开另一个gridview
【发布时间】:2016-09-16 14:49:05
【问题描述】:

我有 2 个gridviews。第一个可见,第二个不可见。

我想要的是:- 当我点击第一个gridview 的任何一行时,相关数据应该在另一个gridview 中打开。

我以前没有这样做过。这是我的html

<cc1:Grid ID="GridFirst" runat="server" FolderStyle="../Styles/Grid/style_12" AutoGenerateColumns="false"
                    AllowAddingRecords="false" AllowColumnResizing="true" Width="40%" ShowFooter="true"
                    ShowHeader="true" OnRowDataBound="GridFirst_RowDataBound" AllowRecordSelection="true">
                    <Columns>
                        <cc1:Column ID="Column1" DataField="Sr_NO" Wrap="true" ReadOnly="true" HeaderText="Sr No"
                            Width="4%">
                        </cc1:Column>
                        <cc1:Column ID="Column2" DataField="Type" Wrap="true" HeaderText="Type" Width="10%">
                        </cc1:Column>
                        <cc1:Column ID="Column3" DataField="Date" Wrap="true" HeaderText="Date" Width="10%">
                        </cc1:Column>
                    </Columns>
                </cc1:Grid>

GridFirst_RowDataBound 事件中

protected void GridFirst_RowDataBound(object sender, Obout.Grid.GridRowEventArgs e)
{
  // open second gridview with relevant data here
}

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    如果您的 GridView 的 DataKeyNames 属性设置如下,请使用 GridView SelectedValue 属性:

    protected void grdClient_SelectedIndexChanged(object sender, EventArgs e)
    {
         if(grdClient.SelectedValue != null)
         {
             Project ObjProject = new Project();
             int userClientID. = int .Parse(grdClient.SelectedValue.ToString());
    
             ObjProject.UserClientID = userClientID;
    
             grdProject.DataSource = ObjProject.GetProjectList();
             grdProject.DataBind();
         }
     }
    

    最初使第二个 GridView 可见为 false,OnRowClick 使其可见为 true。

    【讨论】:

    • 你有什么问题吗?
    • 实际上,我使用的是Obout 网格并且没有像SelectedIndexChanged 这样的属性。所以无法使用您的代码获取调试器..
    • 尝试在 GridView 中使用 OnSelectedIndexChanged。
    【解决方案2】:

    每次一行被数据填充时都会触发 RowDataBound 事件(基本上是在调用 gridview.DataBind() 时);

    这里不是你要在用户事件上显示第二个gridview的代码。

    我认为你应该使用带参数的 RowCommand。

    在你的 aspx 中:

    添加到您的网格视图:

    OnRowCommand="myMethod_Rowcommand"

    首先尝试在每一行上添加一个可点击的按钮(当你点击它时,它会触发命令),添加这些属性:

    CommandName="DisplaySecondGrid" CommandArgument='&lt;%#Eval("yourId") %&gt;'

    然后在你的代码后面

    if(e.CommandName == "DisplaySecondGrid") { var id = e.CommandArgument.ToString(); var myData = repository.GetData(id); secondGridView.DataSource = myData; secondGridView.DataBind(); secondGridView.Visible = true; }

    这样的事情应该可以解决问题

    【讨论】:

    • 你能显示 gridview 的 aspx 吗?作为我必须在 gridview 中添加的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多