После того, как Отфильтрованные данные в виде таблицы при нажатии кнопки «Правка» неправильно выбрали «Первый индексированный ряд» для редактирования - PullRequest
0 голосов
/ 23 апреля 2020

На самом деле, то, что я делаю, отфильтровано в строке в 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();
        }


    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...