我有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
答案 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;
}
这样的事情可以解决问题