OnRowDataBound单击事件打开另一个gridview

时间:2016-09-16 05:43:54

标签: c# asp.net gridview

我有2 import。第一个是可见的,第二个不是。

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

我之前没有这样做过。这是我的HTML

gridview

<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

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

每次用数据填充行时(特别是当你调用gridview.DataBind())时会触发RowDataBound事件;

您不希望将代码放在用户事件上显示第二个gridview。

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

在你的aspx中:

添加到gridview:

OnRowCommand="myMethod_Rowcommand"

首先尝试使用每行上的可单击按钮(当您单击它时,它将触发命令),添加以下属性:

CommandName="DisplaySecondGrid" CommandArgument='<%#Eval("yourId") %>'

然后在你的代码中

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

这样的事情可以解决问题