如何根据gridview选择的行显示gridview [英] How to show gridview based on gridview selected row
问题描述
我根据gridview中选定的行显示不同的gridview。
I am displaying different gridview based on selected row in gridview.
Protected void Bindgrid1()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[5] { new DataColumn("Date"), new DataColumn("Location"), new DataColumn("TimeIn"), new DataColumn("TimeOut"), new DataColumn("Hours") });
dt.Rows.Add("1-01-2018", "Chennai", "9.30", "6.30", "9");
dt.Rows.Add("2-01-2018", "Chennai", "9.30", "7.30", "10");
dt.Rows.Add("3-01-2018", "Chennai", "9.30", "5.30", "8");
dt.Rows.Add("4-01-2018", "Chennai", "9.30", "8.00", "10.30");
dt.Rows.Add("5-01-2018", "Chennai", "9.30", "7.00", "9.30");
GridView1.DataSource = dt;
GridView1.DataBind();
}
Protected void Bindgrid2()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[5] { new DataColumn("Date"), new
DataColumn("Location"), new DataColumn("TimeIn"), new DataColumn("TimeOut"),
new DataColumn("Hours") });
dt.Rows.Add("8-01-2018", "Chennai", "9.30", "7.00", "9.30");
dt.Rows.Add("9-01-2018", "Chennai ", "10.30", "7.30", "9");
dt.Rows.Add("10-01-2018", "Chennai", "11.30", "5.30", "6");
dt.Rows.Add("11-01-2018", "Chennai", "10.00", "8.00", "10.00");
dt.Rows.Add("12-01-2018", "Chennai", "9.00", "7.00", "10.00");
GridView2.DataSource = dt;
GridView2.DataBind();
}
在运行模式下如下
In run mode as follows
Date Location Timein TimeOut Workinghours ViewAttendance
1/1/2018 Chennai 9.30 6.30 9 Clickhere
2//12018 Chennai 9.30 7.30 10 Clickhere
3/1/2018 Chennai 9.30 5.30 8 Clickhere
4/1/2018 Chennai 9.30 8.00 10.30 Clickhere
5/1/2018 Chennai 9.30 7.00 9.30 Clickhere
在运行模式下,当我点击gridview中的第一行时,我想看到Gridview1。
当我点击第二行时gridview中的一行我想隐藏Gridview2。
根据每一行选择gridview,我写了如下代码
in the run mode when i click the first row in gridview i want to visible the Gridview1.
Simliarily when i click the second row in gridview i want to visble the Gridview2.
for selecting gridview based on each row i written a code as follows
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//in gridview First row selected show the gridview1. Bindgrid1 method
if (e.Row.RowType == DataControlRowType.DataRow)
{
string username = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Date"));
LinkButton lnkbtnresult = (LinkButton)e.Row.FindControl("lnkdelete");
BindGrid1();
Gridview1.visible = true;
}
//in gridview second row selected show the gridview2. Bindgrid2 method
if (e.Row.RowType == DataControlRowType.DataRow)
{
string username = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Location"));
LinkButton lnkbtnresult = (LinkButton)e.Row.FindControl("lnkdelete");
BindGrid2();
Gridview2.visible = true;
}
}
但是当我点击gridview中的第二行时,它只显示gridview1,我想看看gridview2。
来自我的上面代码有什么错误。
我尝试了什么:
见上文
But when i click the second row in gridview, it shows the gridview1 only, i want to visible the gridview2.
from my above code what is the mistake.
What I have tried:
See above
推荐答案
Hi Sudhakarthikeyan,>
GridView1_RowDataBound事件在您的情况下是无用的,您需要改为selectedIndexChange事件。
以下是rcode的样子:
Hi Sudhakarthikeyan,
The GridView1_RowDataBound event is useless in your case, you need the selectedIndexChange event instead.
Here is how you rcode should look like :
protected void Page_Load(object sender, EventArgs e)
{
if (!PostBack)
{
Bindgrid1(); //when the page is first run, bind the GridView1
}
}
//execute whenever the user select a row from gridview1
void GridView1_SelectedIndexChanging(Object sender, GridViewSelectEventArgs e)
{
GridViewRow row = GridView1.Rows[e.NewSelectedIndex];
//add your logic to filter data
BindGrid2(); //bind grid 2
}
应该这样做。但是,你正在使用面向对象的编程,这一行应该重构:
That should do it. however, you are using a Object Oriented Programming, things like this line should be refactored :
dt.Rows.Add("5-01-2018", "Chennai", "9.30", "7.00", "9.30");
您应该创建一个类而不是手动填充数据。
希望它有所帮助。
You should create a class instead of filling the data manually.
Hope it helps.
这篇关于如何根据gridview选择的行显示gridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!