如何根据gridview选择的行显示gridview [英] How to show gridview based on gridview selected row

查看:64
本文介绍了如何根据gridview选择的行显示gridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我根据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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆