ASP.net Gridview case à cocher/décocher la mise à jour
J'ai un Gridview en ASP.NET là où j'ai besoin d'inclure case pour le contrôle gridview et un bouton de mise à Jour. Sur la vérification de la case à cocher pour une ligne particulière, l'événement de mise à jour devrait déclencher et en cliquant sur le bouton mettre à jour devrait enregistrer les modifications.
J'ai écrit le code C# pour mettre à jour le contrôle Gridview sans l'aide de la case à cocher. Toutefois, dans l'impossibilité de procéder lorsque la case est inclus.
Affichage de la grille de Conception de Code est :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Employee ID"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" style="margin-left: 110px"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label2" runat="server" Text="Employee Name"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server" style="margin-left: 90px"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label3" runat="server" Text="Employee Experience"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server" style="margin-left: 61px"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label4" runat="server" Text="Employee Address"></asp:Label>
<asp:TextBox ID="TextBox4" runat="server" style="margin-left: 79px"></asp:TextBox>
<br />
<br />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click"
style="text-align: left" Text="Submit" />
<asp:GridView ID="EmployeeGridView" runat="server" AutoGenerateColumns="False"
DataKeyNames="Emp_id" onrowcancelingedit="EmployeeGridView_RowCancelingEdit"
onrowediting="EmployeeGridView_RowEditing"
onrowdeleting="EmployeeGridView_RowDeleting"
onrowupdating="EmployeeGridView_RowUpdating" AllowPaging="True" CellPadding="4"
ForeColor="#333333" GridLines="None"
onpageindexchanging="EmployeeGridView_PageIndexChanging"
Width="408px" AllowSorting="True"
onselectedindexchanged="EmployeeGridView_SelectedIndexChanged">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="Sr.No">
<ItemTemplate><%#Container.DataItemIndex+1 %></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate><%#Eval("Emp_name") %></ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtempname" runat="server" Text='<%#Eval("Emp_name") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Experience">
<ItemTemplate><%#Eval("Emp_exp") %></ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtempexp" runat="server" Text='<%#Eval("Emp_exp") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Address">
<ItemTemplate><%#Eval("Emp_address") %></ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtempaddress" runat="server" Text='<%#Eval("Emp_address") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="true" ButtonType ="Button"
ItemStyle-ForeColor= "Aqua">
<ItemStyle ForeColor="Aqua"></ItemStyle>
</asp:CommandField>
<asp:CommandField ShowDeleteButton="true" ButtonType="Button" HeaderText="Delete" />
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerSettings FirstPageText="First" LastPageText="Last"
Mode="NumericFirstLast" PageButtonCount="4" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
</div>
<asp:Button ID="Button1" runat="server" Text="Update" />
</form>
</body>
</html>
Code C# Derrière est :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
string connstr = @"Data Source=xxxxxxx\SQLEXPRESS;Initial Catalog=xxxxxxxxx;Integrated Security=True";
protected void EmployeeGridView_Sorting(object sender, GridViewSortEventArgs e)
{
Session["sortBy"] = e.SortExpression;
FillGrid();
}
protected void Page_Load(object sender, EventArgs e)
{
Session["sortBy"] = null;
if (!Page.IsPostBack)
{
FillGrid();
}
}
public void FillGrid()
{
SqlConnection con = new SqlConnection(connstr);
con.Open();
SqlCommand cmd = new SqlCommand("GetEmployeeInfo", con);
SqlDataReader dr = cmd.ExecuteReader();//it reads froword only data from database
DataTable dt = new DataTable();//object of data table that uses to conatin whole data
dt.Load(dr);//Sql Data reader data load in data table it is DataTable Method.
EmployeeGridView.DataSource = dt;
EmployeeGridView.DataBind();
}
protected void EmployeeGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
EmployeeGridView.EditIndex = -1;
FillGrid();
}
protected void EmployeeGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
EmployeeGridView.EditIndex = e.NewEditIndex;
FillGrid();
}
protected void EmployeeGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int empid = Convert.ToInt32(EmployeeGridView.DataKeys[e.RowIndex].Value.ToString());//Get Each Row unique value from DataKeyNames
string name = ((TextBox)EmployeeGridView.Rows[e.RowIndex].FindControl("txtempname")).Text;//get TextBox Value in EditItemTemplet that row is clicked
string experience = ((TextBox)EmployeeGridView.Rows[e.RowIndex].FindControl("txtempexp")).Text;
string address = ((TextBox)EmployeeGridView.Rows[e.RowIndex].FindControl("txtempaddress")).Text;
SqlConnection con = new SqlConnection(connstr);
con.Open();
SqlCommand cmd = new SqlCommand("EmployeeUpdate", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@emp_id ", empid);
cmd.Parameters.AddWithValue("@emp_name ", name);
cmd.Parameters.AddWithValue("@emp_exp ", experience);
cmd.Parameters.AddWithValue("@emp_address ", address);
cmd.ExecuteNonQuery();//Sql Command Class method return effected rows use for insert,update, delete
EmployeeGridView.EditIndex = -1;//no row in edit mode
FillGrid();
}
protected void EmployeeGridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int empid = Convert.ToInt32(EmployeeGridView.DataKeys[e.RowIndex].Value.ToString());
SqlConnection con = new SqlConnection(connstr);
con.Open();
SqlCommand cmd = new SqlCommand("DeleteEmployee", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@emp_id ", empid);
cmd.ExecuteNonQuery();
FillGrid();
}
protected void EmployeeGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
EmployeeGridView.PageIndex = e.NewPageIndex;
FillGrid();
}
private void UpdateOrAddNewRecord(string Emp_id, string Emp_name, string Emp_exp, string Emp_address)
{
SqlConnection con = new SqlConnection(connstr);
string sqlStatement = string.Empty;
sqlStatement = "INSERT INTO tbl_employee" +
"(Emp_id, Emp_name, Emp_exp, Emp_address)" +
"VALUES (@Emp_id, @Emp_name, @Emp_exp, @Emp_address)";
con.Open();
SqlCommand cmd = new SqlCommand(sqlStatement, con);
cmd.Parameters.AddWithValue("@Emp_id", Emp_id);
cmd.Parameters.AddWithValue("@Emp_name", Emp_name);
cmd.Parameters.AddWithValue("@Emp_exp", Emp_exp);
cmd.Parameters.AddWithValue("@Emp_address", Emp_address);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
con.Close();
}
protected void Button2_Click(object sender, EventArgs e)
{
UpdateOrAddNewRecord(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text);
FillGrid();
}
}
Je n'ai pas garder le code des procédures stockées de DeleteEmployee, EmployeeUpdate, GetEmployeeInfo.
Dans le code ci-dessus j'ai besoin d'insérer une case à cocher pour le contrôle gridview et mettre à jour les éléments qui sont contrôlés au lieu de cliquer sur Bouton Modifier et de mettre à Jour
- Coller votre travail ici.. les Gens ne peuvent pas lire dans votre esprit..
- Quel est exactement votre problème? Ce qui se passe une fois que vous ajoutez une case à cocher?
- J'ai besoin de code pour garder les cases à cocher pour chaque ligne et une fois que la case est cochée et que le bouton de mise à Jour ci-dessous on clique sur la case sélectionnée , doit inviter l'utilisateur à entrer dans les champs correspondants, puis un bouton "enregistrer" pour enregistrer.
- J'ai un gridview des cases à cocher et un bouton à l'extérieur de la gridview. J'ai besoin de mettre à jour le gridview les valeurs de ligne pour les cases sélectionnées de la base de données. c'est à dire, je veux juste la ligne de valeurs pour lesquelles le spécifique case à cocher est sélectionnée, puis insérer/mettre à jour les valeurs de la table dans la base de données. Pouvez vous s'il vous plaît me suggérer sur cette question?
Vous devez vous connecter pour publier un commentaire.
Lors de l'Événement de mise à Jour du Bouton Cliqué Faire ces choses.
Boucle sur chaque Ligne de la grille.
Dans chaque ligne, obtenir Respectifs de la Case est Cochée
Vérifier si CheckedBox est cochée ou non
Si elle est cochée, puis récupérer les autres valeurs de la ligne actuelle et appel ur méthode de mise à jour.