D'abord, je choisissais tous les enregistrements à la page vide comme ceci:Pas en mesure d'effacer les dernières données source de GridView
OleDbCommand objCmd = new OleDbCommand("SELECT * FROM MyTable", mycon);
objCmd.CommandType = CommandType.Text;
DataTable dtTemp = new DataTable();
OleDbDataReader rd = objCommand.ExecuteReader();
if (rd.HasRows)
{
dtTemp.Load(rd);
gvTemp.DataSource = dtTemp;
gvTemp.DataBind();
}
Dans GridView (gvTemp
), je passe MemID
dans CommandArgument
comme ceci:
<asp:TemplateField HeaderText="Action" ItemStyle-Width="80px">
<ItemTemplate>
<asp:LinkButton ID="lbtnStart" runat="server" CommandArgument='<%# Eval("MemID") %>' CommandName="Start">Start</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
Alors, quand je clique sur Start
, gvTemp_RowCommand
est tiré et je veux obtenir CommandArgument
(MemID
). Donc, je le fais pour y parvenir:
protected void gvTemp_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Start")
{
Response.Redirect("AddMem.aspx?MemID=" + e.CommandArgument.ToString());
}
}
Ce travail bien. Mais le problème est ici.
Lorsque la recherche d'utilisateur pour un enregistrement particulier, je reload gvTemp
comme ceci:
OleDbCommand objCmd = new OleDbCommand("SELECT * FROM MyTable WHERE MemID = ?", mycon);
objCmd.Parameters.Add(myParam);
objCmd.CommandType = CommandType.Text;
DataTable dtTemp = new DataTable();
OleDbDataReader rd = objCommand.ExecuteReader();
if (rd.HasRows)
{
dtTemp.Load(rd);
gvTemp.DataSource = dtTemp;
gvTemp.DataBind();
}
L'exécution de cette requête, je reçois un seul enregistrement. Et quand je clique sur Start
, gvTemp_RowCommand
est tiré. Mais je reçois e.CommandArgument
de l'ancienne DataSource. (c'est-à-dire le top 1 MemID
de SELECT * FROM MyTable
). Donc, avant de se lier DataSource réelle effacer le GridView comme ceci:
gvTemp.DataSource = null;
gvTemp.DataBind();
gvTemp.DataSource = dtTemp;
gvTemp.DataBind();
Mais je reçois e.CommandArgument
de vieux DataSource. Alors qu'est-ce qui me manque? Ou existe-t-il une méthode alternative pour atteindre la même chose?
Quelle est la valeur de 'myParam' que vous passez dans' objCmd.Parameters.Add (myParam); '? – prashanth
try Refresh() ou .ResetBindings peut-il résoudre –
@prashanth Je reçois la valeur de la méthode arguments. – hims056