2015-10-16 18 views
0

我有2個sql來選擇table.program運行網格視圖顯示數字1 sql。gridview得到錯誤的行在選中

 protected void Page_Load(object sender, EventArgs e) 
    { 
     btn_submit.Visible = false; 
     SqlConnection conn = new SqlConnection(@"Data Source=HENDRICK-PC\SQLEXPRESS;Initial Catalog=mylibrary.com;Integrated Security=True"); 
     conn.Open(); 
     string sql = "select * from PEMINJAMAN"; 
     SqlCommand com = new SqlCommand(sql, conn); 
     GridView1.DataSource = com.ExecuteReader(); 
     GridView1.DataBind(); 
     conn.Close(); 
    } 

但我可以改變sql1到sql2只需點擊按鈕。

 protected void btn_search_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      close(); 
      GridView1.DataSource = null; 
      GridView1.DataBind(); 
      lbl_error.Visible = false; 
      SqlConnection conn = new SqlConnection(@"Data Source=HENDRICK-PC\SQLEXPRESS;Initial Catalog=mylibrary.com;Integrated Security=True"); 
      conn.Open(); 
      string sql = "select * from PEMINJAMAN where NAMA_PEMINJAM like '" + txt_search.Text + "%' or ALAMAT_PEMINJAM like '" + txt_search.Text + "%' or HP_PEMINJAM like '" + txt_search.Text + "%' or KODE_BUKU like '" + txt_search.Text + "%' or TGL_PINJAM like '" + txt_search.Text + "%' or TGL_KEMBALI like '" + txt_search.Text + "%'"; 
      SqlCommand com = new SqlCommand(sql, conn); 
      GridView1.DataSource = com.ExecuteReader(); 
      GridView1.DataBind(); 
      conn.Close();     
     } 
     catch 
     { 
      lbl_error.Visible = true; 
     } 
    } 

我必須從gridviewselectrow獲取數據。但問題是事件得到錯誤的row.i改變GridView控件SQL2,我選擇了行,但GridView的變化自動對SQL1,並採取從sql1.not sql2.it是我的GridView控件事件

 protected void GridView1_SelectedIndexChanging1(object sender, GridViewSelectEventArgs e) 
    { 
     btn_submit.Visible = true; 
     lbl_nama.Text = GridView1.Rows[e.NewSelectedIndex].Cells[1].Text; 
     lbl_alamat.Text = GridView1.Rows[e.NewSelectedIndex].Cells[2].Text; 
     lbl_hp.Text = GridView1.Rows[e.NewSelectedIndex].Cells[3].Text; 
     lbl_kode.Text = GridView1.Rows[e.NewSelectedIndex].Cells[4].Text; 
     lbl_peminjaman.Text = GridView1.Rows[e.NewSelectedIndex].Cells[5].Text; 
     lbl_pengembalian.Text = GridView1.Rows[e.NewSelectedIndex].Cells[6].Text; 

     DateTime kembali = DateTime.ParseExact(lbl_pengembalian.Text,"dd-MM-yyyy",CultureInfo.InvariantCulture); 
     if (DateTime.Now > kembali) 
     { 
      lbl_denda.Text = "Rp.20000,-"; 
     } 
     else 
     { 
      lbl_denda.Text = "Rp.0,-"; 
     } 
    } 

和排它的我的gridview。

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" style="text-align: left" AutoGenerateSelectButton="true" OnSelectedIndexChanging="GridView1_SelectedIndexChanging1"> 
      <AlternatingRowStyle BackColor="White" /> 
      <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
      <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
      <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
      <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
      <SortedAscendingCellStyle BackColor="#FDF5AC" /> 
      <SortedAscendingHeaderStyle BackColor="#4D0000" /> 
      <SortedDescendingCellStyle BackColor="#FCF6C0" /> 
      <SortedDescendingHeaderStyle BackColor="#820000" /> 
     </asp:GridView> 

如何解決它?對不起我的英語如此糟糕。 thx

+1

可能重複[change table gridview select wrong row](http://stackoverflow.com/questions/33155617/change-table-gridview-select-wrong-row) – haraman

回答

0

SelectedIndexChanging事件返回您選擇的新行而不是當前選定的行,在這裏您可以取消選擇。要獲取當前選定的行,您必須使用事件並通過SelectedRow訪問它。

protected void GridView1_SelectedIndexChanged(Object sender, EventArgs e) 
{ 
    btn_submit.Visible = true; 
    lbl_nama.Text = GridView1.SelectedRow.Cells[1].Text; 
    .... 
}