2015-05-21 2 views
0

В настоящее время я сетки данных, которыеCheckbox asp.net C# Сетка

"SELECT * FROM table WHERE Hentet = 'nej';" 

по этой сетке у меня есть точная копия его, но

"WHERE Hentet = 'Ja';" 

, как вы увидите в коде.

Работает с двумя сетками и получает данные, которые они должны получить, однако есть флажок в каждой строке «Сетка 1», поэтому вы можете выбрать «Все строки», нажмите кнопку, и я хочу, чтобы значение Nej; было измените на Ja; на этой кнопке. Нажмите, поэтому строки с отмеченным флажком будут перемещены в Grid2, теперь их значение равно Ja. В Grid2 нет столбца флажка, поэтому его значение только от grid1 до grid2, а не в обоих направлениях. не

Сетка 1

<asp:DataGrid ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="false"> 
      <Columns> 
      <asp:TemplateColumn> 
       <ItemTemplate> 
       <asp:CheckBox ID="CheckBox1" runat="server"></asp:CheckBox> 
        </ItemTemplate> 
      </asp:TemplateColumn> 

      <asp:BoundColumn DataField="dato" HeaderText="Dato"> 
      </asp:BoundColumn> 
      <asp:BoundColumn DataField="Antal" HeaderText="Antal"> 
      </asp:BoundColumn> 
      <asp:Boundcolumn HeaderText="Navn" Datafield="VareNAvn"> 
      </asp:Boundcolumn> 
     <asp:BoundColumn DataField="KøbtAfBrugerID" HeaderText="Købt af ID"> 
      </asp:BoundColumn> 
      <asp:Boundcolumn HeaderText="Hented" DataField="Afhented"> 
       </asp:Boundcolumn> 
     </Columns> 
    </asp:DataGrid> 
    <asp:Button ID="Button_Hented" CssClass="btfarve" runat="server" Text="Afhentet" OnClick="Button_Hented_Click" /> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>" 
    SelectCommand="SELECT * FROM [Transactioner] WHERE afhented ='Nej';"> 
    </asp:SqlDataSource> 

СЕТКА2

<asp:DataGrid ID="GridView2" runat="server" DataSourceID="SqlDataSource2" AutoGenerateColumns="false"> 

      <Columns> 
       <asp:BoundColumn DataField="dato" HeaderText="Dato"> 
       </asp:BoundColumn> 
       <asp:BoundColumn DataField="Antal" HeaderText="Antal"> 
       </asp:BoundColumn> 
       <asp:Boundcolumn HeaderText="Navn" Datafield="VareNAvn"> 
       </asp:Boundcolumn> 
      <asp:BoundColumn DataField="KøbtAfBrugerID" HeaderText="Købt af ID"> 
       </asp:BoundColumn> 
       <asp:Boundcolumn HeaderText="Hented" DataField="Afhented"> 
        </asp:Boundcolumn> 
      </Columns> 
     </asp:DataGrid> 
     <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
     ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>" 
     SelectCommand="SELECT * FROM [Transactioner] WHERE afhented ='Ja';"> 
     </asp:SqlDataSource> 

Код За

protected void Button_Hented_Click(object sender, EventArgs e) 
    { 
     string Hejsa; 

     SqlConnection conn = new SqlConnection(); 
     conn.ConnectionString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ToString(); 

     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT * FROM Transactioner"; 



     conn.Open(); 
     SqlDataReader reader = cmd.ExecuteReader(); 

     if (reader.Read()) 
     { 

      Hejsa = reader["Id"].ToString(); 



      foreach (DataGridItem item in GridView1.Items) 
      { 
       CheckBox Cb = item.Cells[0].Controls[1] as CheckBox; 


       if (Cb.Checked) 
       { 

        SqlConnection conn2 = new SqlConnection(); 
        conn2.ConnectionString = 
         ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ToString(); 
        SqlCommand cmd2 = new SqlCommand(); 
        cmd2.Connection = conn2; 

        cmd2.CommandText = "UPDATE Transactioner" 
         + " SET Afhented = @Afhented" 
         + " where Id = @Id"; 


        cmd2.Parameters.Add("@Afhented", SqlDbType.NVarChar).Value = "Ja"; 
        cmd2.Parameters.Add("@Id", SqlDbType.Int).Value = Hejsa; 


        conn2.Open(); 
        cmd2.ExecuteNonQuery(); 
        conn2.Close(); 

       } 

      } 
      Response.Redirect(Request.RawUrl); 

     } 
     conn.Close(); 

     } 

Так это весь код, я получаю НЕТ сообщения об ошибках atall, и я действительно не могу увидеть, что снова не так. Все, что я действительно хочу, чтобы код выполнял, - это нажать кнопку, если флажок установлен, измените значение «Nej» на «Ja». Извините, если мой вопрос был трудно понять. Tekar

+0

Hejsa = читатель ["Id"]. ToString(); всегда будет давать вам первую запись в таблице. Вы только обновляете эту запись. – Hakunamatata

+0

@Hakunamatata А я вижу .. Какие-нибудь подсказки о том, как я пойду на правильный путь отсюда? – tekar

ответ

1
<asp:DataGrid ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="false"> 
      <Columns> 
      <asp:TemplateColumn> 
       <ItemTemplate> 
       <asp:CheckBox ID="CheckBox1" runat="server"></asp:CheckBox> 
        </ItemTemplate> 
      </asp:TemplateColumn> 
<asp:BoundColumn DataField="Id" HeaderText="Id"> <!--New Column Added--> 
      <asp:BoundColumn DataField="dato" HeaderText="Dato"> 
      </asp:BoundColumn> 
      <asp:BoundColumn DataField="Antal" HeaderText="Antal"> 
      </asp:BoundColumn> 
      <asp:Boundcolumn HeaderText="Navn" Datafield="VareNAvn"> 
      </asp:Boundcolumn> 
     <asp:BoundColumn DataField="KøbtAfBrugerID" HeaderText="Købt af ID"> 
      </asp:BoundColumn> 
      <asp:Boundcolumn HeaderText="Hented" DataField="Afhented"> 
       </asp:Boundcolumn> 
     </Columns> 
    </asp:DataGrid> 
    <asp:Button ID="Button_Hented" CssClass="btfarve" runat="server" Text="Afhentet" OnClick="Button_Hented_Click" /> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>" 
    SelectCommand="SELECT * FROM [Transactioner] WHERE afhented ='Nej';"> 
    </asp:SqlDataSource> 

В вашей кнопки Click события найти то, что является идентификатор записи, которую вы хотите обновить

protected void Button_Hented_Click(object sender, EventArgs e) 
     { 
      string Hejsa; 

    // No need to keep on recreating these objects in a loop. 
    SqlConnection conn2 = new SqlConnection(); 
         conn2.ConnectionString = 
          ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ToString(); 
         SqlCommand cmd2 = new SqlCommand(); 
         cmd2.Connection = conn2; 
    conn2.Open(); 
       foreach (DataGridItem item in GridView1.Items) 
       { 
        CheckBox Cb = item.Cells[0].Controls[1] as CheckBox; 


        if (Cb.Checked) 
        { 
         Hesja = item.Cells[1].Text.Trim(); // Get the id of checked record 


         cmd2.CommandText = "UPDATE Transactioner" 
          + " SET Afhented = @Afhented" 
          + " where Id = @Id"; 


         cmd2.Parameters.Add("@Afhented", SqlDbType.NVarChar).Value = "Ja"; 
         cmd2.Parameters.Add("@Id", SqlDbType.Int).Value = Hejsa; 



         cmd2.ExecuteNonQuery(); 


        } 

       } 
conn2.Close(); 
       Response.Redirect(Request.RawUrl); 


      } 

Если вы хотите, чтобы скрыть вновь добавленный столбец Id из Gridview сделать это путем реализации ряда DataBound событие gridview и скрыть этот столбец.

+0

Работы Полностью perfekt. Спасибо, сэр. – tekar