На самом деле, то, что я делаю, отфильтровано в строке в Gidview. А затем мне нужно отредактировать эту Отфильтрованную Строку. Когда я нажму опцию «Редактировать», она покажет первую индексированную строку вида сетки. Мне нужно отредактировать текущую строку из вида сетки.
Итак, дело в том, как выбрать текущее редактирование строки фильтрованного индекса?
Спасибо.
Html :
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" ShowHeaderWhenEmpty="True" EmptyDataText="No Recoreds Found" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" EnableSortingAndPagingCallbacks="True" ForeColor="#333333" GridLines="None" PageSize="3" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelEdit">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="Fname" HeaderText="Fname" SortExpression="Fname" />
<asp:BoundField DataField="Lname" HeaderText="Lname" SortExpression="Lname" />
<asp:BoundField DataField="Mobile" HeaderText="Mobile" SortExpression="Mobile" />
<asp:BoundField DataField="Mail" HeaderText="Mail" SortExpression="Mail" />
<asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
<asp:BoundField DataField="Address" HeaderText="Address" SortExpression="Address" />
<asp:BoundField DataField="Gender" HeaderText="Gender" SortExpression="Gender" />
<asp:BoundField DataField="Username" HeaderText="Username" SortExpression="Username" />
</Columns>
<EditRowStyle BackColor="#7C6F57" />
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#E3EAEB" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F8FAFA" />
<SortedAscendingHeaderStyle BackColor="#246B61" />
<SortedDescendingCellStyle BackColor="#D4DFE1" />
<SortedDescendingHeaderStyle BackColor="#15524A" />
</asp:GridView>
Aspx.Cs Code:
namespace SampleWebsite
{
public partial class UserDetails : System.Web.UI.Page
{
SqlConnection con = new SqlConnection("Data Source=DESKTOP-GDO4NRM;Initial Catalog=EmpDB;Integrated Security=True");
SqlCommand cmd;
protected void Page_Load(object sender, EventArgs e)
{
Control myControlMenu = Page.Master.FindControl("divTemp");
if (myControlMenu != null)
{
myControlMenu.Visible = false;
}
if (Session["Username"] == null || (Session["Username"] != null && ("" + Session["Username"]).Length == 0))
{
Session.RemoveAll();
Response.Redirect("Login.aspx");
}
if (!Page.IsPostBack)
{
FillGrid();
}
}
private void FillGrid()
{
//cmd = new SqlCommand("Select * from Emp where Username = '"+txtUsername.Text+"'", con);
cmd = new SqlCommand("Select * from Emp", con);
DataTable tbl = new DataTable();
con.Open();
tbl.Load(cmd.ExecuteReader());
con.Close();
GridView1.DataSourceID = null;
GridView1.DataSource = tbl;
GridView1.DataBind();
}
protected void Logout(object sender, EventArgs e)
{
Session.RemoveAll();
Response.Redirect("Welcome.aspx");
}
protected void Search(object sender, EventArgs e)
{
con.Open();
SqlCommand cmd = new SqlCommand();
String myquery = "Select * from Emp where Username='" + txtUsername.Text + "' ";
cmd.CommandText = myquery;
cmd.Connection = con;
cmd.Parameters.AddWithValue("Username", txtUsername.Text);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
GridView1.Visible = true;
GridView1.DataSourceID = null;
GridView1.DataSource = dt;
GridView1.DataSourceID = String.Empty;
GridView1.DataBind();
con.Close();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataBind();
FillGrid();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
String mycon = "Data Source=DESKTOP-GDO4NRM;Initial Catalog=EmpDB;Integrated Security=True";
SqlConnection scon = new SqlConnection(mycon);
string Fname = (GridView1.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox).Text;
string Lname = (GridView1.Rows[e.RowIndex].Cells[2].Controls[0] as TextBox).Text;
string Mobile = (GridView1.Rows[e.RowIndex].Cells[3].Controls[0] as TextBox).Text;
string Mail = (GridView1.Rows[e.RowIndex].Cells[4].Controls[0] as TextBox).Text;
string Address = (GridView1.Rows[e.RowIndex].Cells[5].Controls[0] as TextBox).Text;
string City = (GridView1.Rows[e.RowIndex].Cells[6].Controls[0] as TextBox).Text;
string Gender = (GridView1.Rows[e.RowIndex].Cells[7].Controls[0] as TextBox).Text;
string Username = (GridView1.Rows[e.RowIndex].Cells[8].Controls[0] as TextBox).Text;
{
using (SqlCommand cmd = new SqlCommand("Data Source=DESKTOP-GDO4NRM;Initial Catalog=EmpDB;Integrated Security=True", con))
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Update Emp set Fname=@Fname,Lname=@Lname,Mobile=@Mobile,Mail=@Mail,Address=@Address,City=@City,Gender=@Gender where Username = @Username";
cmd.Parameters.Add("@Fname", SqlDbType.VarChar).Value = Fname;
cmd.Parameters.Add("@Lname", SqlDbType.VarChar).Value = Lname;
cmd.Parameters.Add("@Mobile", SqlDbType.VarChar).Value = Mobile;
cmd.Parameters.Add("@Mail", SqlDbType.VarChar).Value = Mail;
cmd.Parameters.Add("@Address", SqlDbType.VarChar).Value = Address;
cmd.Parameters.Add("@City", SqlDbType.VarChar).Value = City;
cmd.Parameters.Add("@Gender", SqlDbType.VarChar).Value = Gender;
cmd.Parameters.Add("@Username", SqlDbType.VarChar).Value = Username;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
GridView1.EditIndex = -1;
FillGrid();
}
}
}
protected void GridView1_RowCancelEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
FillGrid();
}
}
}