Comment Lier un gridview d'électricité statique WebMethod
J'ai appelé un Code de la méthode à l'aide de jQuery à l'aide de web Statique Méthode. Que l'appel de la méthode web a été le succès, mais quand je la lie affichage de la grille à l'intérieur de cette méthode donne une erreur qui ne peut pas contrôler l'utilisation de la méthode statique.comment pouvons-nous résoudre ce problème.
public static DataTable GetDataTable()
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand("StoredProcedurename");
String constr = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
string Startdate = DateTime.Now.ToString("yyyy-MM-dd");
string EndDate = Convert.ToDateTime(Startdate).AddMonths(-6).ToString("yyyy-MM-dd");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FromDate", Startdate);
cmd.Parameters.AddWithValue("@ToDate", EndDate );
cmd.Connection = con;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
//i want to use same dataset to bind with the grid
gridToBind.DataSource = ds.Tables[1];
gridToBind.DataBind();
txtStatus.Text="Data Received";
//above three lines throws error.
return ds.Tables[1];
}
Et d'avoir d'erreur " Une référence d'objet est requise pour la non-statique champ, une méthode ou une propriété "
Juste
Il n'est pas de travail.Ok je vais changer cette chaîne params.Ma Concentration est à lier le contrôle gridview seulement..
aspsnippets.com/Articles/...
gridToBind.DataSource = ds
? Et ne les stockez pas votre DateTime
valeurs en tant que personnage.Il n'est pas de travail.Ok je vais changer cette chaîne params.Ma Concentration est à lier le contrôle gridview seulement..
aspsnippets.com/Articles/...
OriginalL'auteur Athul | 2015-06-18
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire ce que vous voulez.
Vous incompréhension de la différence entre la statique et de l'instance. Par exemple, votre page peut être utilisé par des centaines de personnes différentes. Chaque personne sera servi instance différente de votre page, et à chaque personne va voir autre instance de contrôle GridView. D'autre part,depuis votre WebMethod est statique, l'ENSEMBLE de ces centaines de personnes vont être servi à UNE méthode.
Alors comment votre méthode statique de décider lequel de servir? Il ne peut pas.
Si vous voulez remplir la grille de vue de l'ajax, vous avez besoin d'envoyer des données à partir de votre WebMethod, voir un exemple ici.
Lire la suite de l'article pour en savoir plus Pourquoi WebMethod sont statiques.
En fait les performances seront un peu mieux puisqu'il n'y aura pas besoin de créer de 100 instances. Mais c'est un peu seulement.
comment cette webmethod œuvres? premier processus de demande ensuite la deuxième ou simultanément?
Simultanément traitées, par conséquent, vous pouvez avoir des problèmes de synchronisation avec des méthodes statiques. Voir ici pourquoi, normalement, vous devriez éviter de méthodes statiques dans Asp.Net stackoverflow.com/questions/194999/...
aspsnippets.com/Articles/...
OriginalL'auteur Atilla Ozgur
si vous allez utiliser la méthode statique alors vous ne serez pas en mesure d'utiliser tout contrôle de la page , parce qu'ils appartiennent à une classe d'une page qui n'a pas de portée statique. en statique méthode, vous n'êtes autorisé à utiliser les données statiques,de contrôle, etc
La solution est que vous aurez à faire une nouvelle instance de votre parent de la classe c'est à dire la Page de la Classe dans la méthode statique et par la suite, vous pouvez accéder à tous les contrôle de la page de cette instance.
comme cela..
mais le moyen donné ne fonctionne pas, si vous voulez conserver les données en arrière, comme le instnace sera de nouveau donc, les anciennes données seront vidées.
Cela fera un
new instance
de laform
et lagridview
denew instance
sera rempli. Ce ne sera pas remplir laGridView
suroriginal form
donc ce n'est pas la bonne approche.OriginalL'auteur hdkhardik
Vous pouvez passer à la
reference
de contrôle gridview à lastatic method
et lier la girdview.Si vous faites une
new
instance de laclass
et d'appeler la méthode statique, il vacreate new form
etall controls
seracreated
pour quespecific instance
de sorte que legridview
suroriginal form
ne sera jamais rempli.Voici un exemple de comment vous pouvez passer de référence et bindgridview.
Que vous avez besoin de retourner les données et créer le code html dans le succès de l'ajax.
OriginalL'auteur Mairaj
le problème n'est pas avec le mot-clé static,
c'est avec méthode web mot-clé,
lorsque asp.net au poste de contrôle du dos,
il a fallu tout le formulaire sur le serveur, de ce fait, pouvez obtenir chaque contrôle de votre serveur.
tandis que la méthode web ont uniquement les données que vous transmettez par le biais de ses paramètres, il ne sait même pas le nom de commande disponible dans votre page asp
vous avez 2 option
supprimer webmethod et de laisser ce post de retour ou
créer votre gridview à partir de jquery par table, tr, td
comment jamais, je ne sais pas sur gridview en passant en paramètre de la méthode web, vous pouvez également vérifier, mais je pense que vous pouvez le lire seulement(si possible), la liaison n'est pas possible
OriginalL'auteur VISHMAY
Le problème que vous avez c'est en rapport avec la façon dont asp.net webforms les données bindin à ses contrôles.
Lorsque vous êtes dans un état normal de publication et de vous remplir le gridview source de données avec quelques données, ces données sont "enregistrées" dans le contrôle gridview viewstate et est ensuite rendu dans le navigateur dans un champ caché nommé _VIEWSTATE et c'est là que vous problème est.
Lorsque vous faites l'appel ajax et de l'invocation de votre (statique) de la méthode web de votre serveur contrôles n'existent pas parce que de ne pas avoir la totalité du cycle de la page.
Ce que vous pouvez faire est d'enregistrer votre source de données dans la Session pour que, plus tard, de la manipulation.
En rapport à votre appel ajax JQuery, vous avez à gérer cela manuellement, peut-être à l'aide de la bibliothèque comme knock-out ou vous pouvez remplacer votre actuel ajax de jquery appel à un bouton caché où vous mettez votre code actuel et de mettre votre gridview et ce bouton à l'intérieur d'un UpdatePanel et faire un mise à jour partielle.
OriginalL'auteur Coastpear
Vous pouvez le faire de cette façon, le Retour table de méthode statique.
Et lier cette méthode web de j et de requête Ajax.
OriginalL'auteur Musakkhir Sayyed