sudhakarthikeyan Ответов: 1

Как показать gridview на основе выбранной строки gridview


Я показываю различные gridview на основе выбранной строки в 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();
 }

В режиме выполнения выполните следующие действия

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 на основе каждой строки я написал следующий код

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.

из моего вышеприведенного кода следует, что это ошибка.

Что я уже пробовал:

Смотреть выше

Ziee-M

Привет судхакартхикеян, вы используете неправильные события для достижения своей цели.
Вот как вы должны это сделать :
1-скорость загрузки страницы событие : Персонализация вашего управления gridview1
2-Событие GridView1SelectedIndexChange:
Вы получаете необходимую информацию от Grid1 и используете ее для привязки Grid2.
Вот и все.
Однако вам следует немного больше изучить поток/порядок событий для Asp.net чтобы получить более четкое представление о Asp.net жизненный цикл.

[no name]

хорошо какие изменения я должен внести в свой вышеприведенный код Пожалуйста скажите мне

1 Ответов

Рейтинг:
0

Ziee-M

Привет Судхакартхикеян,

Событие GridView1_RowDataBound в вашем случае бесполезно, вместо него вам нужно событие selectedIndexChange.
Вот как должен выглядеть ваш rcode :

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
  }

Этого должно хватить. однако вы используете объектно-ориентированное программирование, такие вещи, как эта строка, должны быть рефакторизованы :
dt.Rows.Add("5-01-2018", "Chennai", "9.30", "7.00", "9.30");

Вы должны создать класс вместо того, чтобы заполнять данные вручную.

Надеюсь, это поможет.


[no name]

это не работает. когда я нажму на вторую строку в gridview, нажмите здесь . он показывает gridview 1 только во всплывающем окне.

Мой исходный код html gridview выглядит следующим образом

Управления gridview1 исходный HTML

&ЛТ;АСП:таблицы с ID="gridview1, на" атрибут runat="сервер" AllowPaging="true" в AutoGenerateColumns="ложных" CellPadding="10"
CellSpacing="0" OnRowDataBound="GridView1_RowDataBound" />
<колонки>
<asp:BoundField DataField="Date" HeaderText="Date" />
<asp:BoundField DataField="Location" HeaderText="Location" />
<asp:BoundField DataField="TimeIn" HeaderText="TimeIn" />
&ЛТ;как ASP:BoundField datafield в="тайм-аут" HeaderText="тайм-аут" /&ГТ;
<asp:BoundField DataField="WorkingHours" HeaderText="WorkingHours" />
&ЛТ;как ASP:BoundField datafield в="идентификатор" HeaderText="идентификатор" /&ГТ;

<asp:TemplateField HeaderText="ViewAttendance">
<itemtemplate>
&ЛТ;как ASP:LinkButton элемент ID="lnkdelete" с href="данные-тумблер#myModal"="модальный" атрибут runat="сервер"и GT;Нажмите здесь







Gridview 2 Html источник





×




&ЛТ;АСП:метка идентификатор="lblmessage" атрибут runat="сервер" ClientIDMode="статический"и GT;

<asp:GridView ID="gridview2" runat="server" CellPadding="6" CellSpacing="3" ForeColor="#333333" GridLines="None" Width="570px">
<AlternatingRowStyle BackColor="Белый" />
<EditRowStyle BackColor="#2461BF" />
&ЛТ;FooterStyle свойства backcolor="#507CD1" шрифт-жирный="истинный" цвет="белый" /&ГТ;
&ЛТ;HeaderStyle свойства backcolor="#507CD1" шрифт-жирный="истинный" цвет="белый" CssClass="gridHeaderAlignRight" /&ГТ;
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
&ЛТ;SelectedRowStyle свойства backcolor="#D1DDF1" шрифт-жирный="истинный" цвет="#333333" /&ГТ;
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />





Закрывать

Ziee-M

В теге asp:gridview добавьте OnSelectedIndexChanged= "GridView1_SelectedIndexChanging", чтобы подписаться на событие.
&ЛТ;АСП:таблицы с ID="gridview1, на" атрибут runat="сервер" AllowPaging="true" в AutoGenerateColumns="ложных" CellPadding="10"
CellSpacing="0" OnRowDataBound="GridView1_RowDataBound" OnSelectedIndexChanged= "GridView1_SelectedIndexChanging"/>
Удалите код RowDatabound и добавьте свою логику в событие OnSelectedIndexChanged