Actuellement j'ai un le code suivant remplissant une vue de données de données montrant les informations de compte d'utilisateur sur notre système. Ce que je veux faire est d'avoir une case à cocher sur le datagridview pour l'option "accountenabled" et un bouton de mise à jour au bas du formulaire pour qu'il mette à jour tous les utilisateurs qui ont subi des changements. Je tire actuellement les données en utilisant un sqldatareader cependant de ce que j'ai lu j'ai besoin d'employer un sqldataadapter. J'ai créé les noms de colonne sur le datagridview et le lecteur récupère actuellement tout correctement.Sqldataapter advice
Quelqu'un pourrait-il me diriger dans la bonne direction pour le faire avec un adaptateur sqldatadapter?
Merci
public UserAdmin()
{
InitializeComponent();
//Load user list
// Locals
Functionality func = new Functionality();
SqlConnection supportDB = null;
SqlCommand CheckUser = null;
SqlDataReader rdr;
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string User = System.Environment.UserName.ToString();
string spName = "gssp_ShowAllUsers";
try
{
using (supportDB = new SqlConnection(GSCoreFunc.ConnectionDetails.getConnectionString(ConnectionType.SupportDB)))
{
using (CheckUser = new SqlCommand(spName, supportDB))
{
// Set the command type
CheckUser.CommandType = CommandType.StoredProcedure;
// Populate the parameters.
CheckUser.Parameters.Add(func.CreateParameter("@spErrorID", SqlDbType.Int, ParameterDirection.Output, DBNull.Value));
// Open the connection and populate the reader with the SP output
supportDB.Open();
rdr = CheckUser.ExecuteReader();
if (CheckUser.Parameters["@spErrorID"].Value != null)
{
throw new InvalidOperationException();
}
// If the data reader has rows display output on label
if (rdr.HasRows)
{
//Output values
while (rdr.Read())
{
//Bind to data table
dgvUsers.Rows.Add(rdr["agentID"].ToString(), rdr["createdon"].ToString(), rdr["firstname"].ToString(), rdr["lastname"].ToString(), rdr["username"].ToString(), rdr["emailaddress"].ToString(), rdr["Departments"].ToString(), rdr["accountenabled"].ToString(), rdr["AgentAccountLevel"].ToString());
}
}
// Close reader and connection.
rdr.Close();
supportDB.Close();
}
}
}
catch (Exception ex)
{
//Show error message
string error = ex.ToString(); //Real error
string FriendlyError = "There has been error loading the user list"; // Error user will see
GSCoreFunc.ShowMessageBox.msgBoxErrorShow(FriendlyError);
//Log error to ExceptionDB
GSCoreFunc.ReportException.reportEx(GSCoreFunc.ApplicationInformation.ApplicationName, error, FriendlyError, GSCoreFunc.ApplicationInformation.ComputerName, GSCoreFunc.ApplicationInformation.OperatingSystem, GSCoreFunc.ApplicationInformation.screenSize, GSCoreFunc.ApplicationInformation.IPAdddress, GSCoreFunc.ApplicationInformation.domainName);// Pass error to GSCoreFunc to log to the ExceptionDB
}
}
private void btClose_Click(object sender, EventArgs e)
{
//Close window
Close();
}
}
}
Merci pour le conseil Rune. C'est un winform sur lequel je travaille. Pourriez-vous donner un exemple de la façon dont j'utiliserais la liaison de données au lieu de générer chaque ligne? – Steve
@Steve: Regardez ici: http://support.microsoft.com/kb/307860 Le premier exemple intéressant est celui des contrôles de liste Data-Bound. C'est simple, mais couvre les bases. Plus bas, vous avez un exemple de la manière de lier un DataReader à la place d'une table de données. –