0
votes

ma vue de grille ne se rafraîchit pas après le tri

J'ai une vue en grille dans mon projet et a écrit des codes pour la conversion des dates de ma grille à une date de calendrier persan

Pour la première fois lorsque la grille apparaît toutes les données que mes dates sont correctement au format persan, mais si J'appuie sur le bouton pour trier qu'il apparaît à nouveau dans le format anglais au format anglais p>

Comment dois-je garder les dates de format persan après le tri? P>

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;
using System.Configuration;
using System.Globalization;
public partial class dr_report : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
          GridView2.Visible = false;
          string userinput = "";
          int c = GridView1.Rows.Count;
          for (int i = 0; i < GridView1.Rows.Count; i++)
          {
              userinput = GridView1.Rows[i].Cells[4].Text;
              System.DateTime date = Convert.ToDateTime(userinput);
              System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();

              int year = p.GetYear(date);
              int month = p.GetMonth(date);
              int day = p.GetDayOfMonth(date);
              System.DateTime currentDate = new System.DateTime(year, month, 1);
              currentDate = currentDate.AddDays(day - 1);

              GridView1.Rows[i].Cells[4].Text = currentDate.ToString("dd/MM/yyyy");


           }
         }
      }




     protected void Button1_Click(object sender, EventArgs e)
     {
       GridView1.Visible = false;
       GridView2.Visible = true;
       SqlConnection con = new SqlConnection();
       con.ConnectionString = "Data Source=.;Initial Catalog=daymond;Integrated Security=True";
       SqlCommand com = new SqlCommand();
       SqlCommand com1 = new SqlCommand();
       SqlDataAdapter dat = new SqlDataAdapter();
       DataTable dt = new DataTable();
       com.Connection = con;
       con.Open();

       string query = "select [usercustomer], [uservisitor], [idcustomer], [takhasos], [date] from [customer] where idcustomer = '" + TextBox1.Text + "'";
       com.CommandText = query;
       com.Connection = con;
       com1.CommandText = "Delete from [customer] where [idcustomer]=1255";
       dat.DeleteCommand =com1;
       dat.SelectCommand = com;
       dat.Fill(dt);
       GridView2.DataSource = dt;
       GridView2.DataBind();
     }



   protected void LinkButton1_Click(object sender, EventArgs e)
   {
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=daymond;Initial Catalog=daymond;Integrated Security=True";
    SqlCommand com = new SqlCommand();
    com.Connection = con;
    con.Open();
    SqlDataAdapter Adapter = new SqlDataAdapter();
    System.Data.DataTable dt = new System.Data.DataTable();

    Session.Remove("users");
    Response.Redirect("index.aspx");
   }




  protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
  {

  }
 }


14 commentaires

Ithink vous devez vérifier l'événement ISPOSTBACK? Pouvez-vous montrer que le code complet signifie la page Charger l'événement et le bouton de tri cliquez sur l'événement


C'est un bouton automatique pour le tri dans la vue de la grille que j'ai déjà envoyé le code de chargement de la page


Avez-vous écrit ce code à l'intérieur de la page_load sans vérifier la condition ISPOStBack true ou false


@MangeshaUti Oui, je suis entré dans ce code dans la page-chargement et Ispostback est vrai


Void protégé page_load (expéditeur d'objet, evenargs e) {if (! this.ispospostback) {// Votre code}}


Votre code est-il au format ci-dessus


@MangeshaUti oui


donc supprimer si (! this.ispospostback) signifie que je ne vérifie pas si cela postaback ou non


@Mangeshautti ne convertit pas


Pouvez-vous montrer votre code complet afin d'essayer de le reproduire sur ma configuration


Pouvez-vous déplacer votre code dans la méthode d'événement Rowcreated et modifier chaque ligne comme sa création? Docs. microsoft.com/en-us/dotnet/api/...


@Mangeshautti je ne peux pas envoyer de code complet en raison de la limitation de ces messages


Vous mettez à jour votre code dans la question elle-même


@MangeshaUti Code complet placé


3 Réponses :


0
votes

Je pense que vous devez stocker la SORSEXPRESSION dans une visualisation et trier la source de données avant de se lier à GridView xxx

Vérifiez ce


0 commentaires

0
votes

Je déplacerais votre code dans l'événement Rowcreated.

void GridView1_RowCreated(Object sender, GridViewRowEventArgs e)
  {


    if(e.Row.RowType == DataControlRowType.DataRow)
    {
    string userInput = e.Row.Cells[4].Text;
    System.DateTime date = Convert.ToDateTime(userInput);
    System.Globalization.PersianCalendar p = newSystem.Globalization.PersianCalendar(); 

    int year = p.GetYear(date);
    int month = p.GetMonth(date);
    int day = p.GetDayOfMonth(date);
    System.DateTime currentDate = new System.DateTime(year, month, 1);
    currentDate = currentDate.AddDays(day - 1);
    e.Row.Cells[4].Text = currentDate.ToString();
    }
  }


0 commentaires

0
votes

au lieu de page_load code> Utilisation de l'événement OnSavestaTecomplete code> Evénement de la page, il tire à la fin du cycle de vie de la page. Plus d'infos page_cycle dans ASP .NET

Ainsi, lorsque la vue de la grille se lie avec la source et trier la colonne, vous pouvez appliquer votre logique pour modifier le format de date P>

 protected override void OnSaveStateComplete(EventArgs e)
        {
            string userinput = "";
            int c = GridView1.Rows.Count;
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                userinput = GridView1.Rows[i].Cells[4].Text;


                System.DateTime date = Convert.ToDateTime(userinput);
                System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();

                int year = p.GetYear(date);
                int month = p.GetMonth(date);
                int day = p.GetDayOfMonth(date);
                System.DateTime currentDate = new System.DateTime(year, month, 1);
                currentDate = currentDate.AddDays(day - 1);

                GridView1.Rows[i].Cells[4].Text = currentDate.ToString("dd/MM/yyyy");

            }
        }


2 commentaires

Content de vous aider !!


Nous avons un site web que tout le monde peut ajouter une sorcière enregistrée inclut la colonne de date à chaque fois que l'adresse Ajouter un enregistrement à la base de données Une date enregistrera la colonne Date de date et lorsqu'ils veulent les voir dans un gridview, il sera converti au format du calendrier persan. Certaines dates spécifiques ne peuvent pas convertir.Pour exemple si nous voulons convertir la date 1398/2/30 ou 1398/2/31 à la date grégorienne, cela donnera une erreur