Meddelande

Minska
No announcement yet.

Problem med RadioButtonList och paging

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Problem med RadioButtonList och paging

    Jag har en RadioButtonListoch en GridView på min sida.
    Via RadioButtonList1 så väljer jag vilka sql som skall köras. GridView är kopplad till paging. Problemet är att RadioButtonList1 alltid går tillbaka till index 0 vid postback.
    [kod]
    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
    {
    int i = Convert.ToInt32(RadioButtonList1.SelectedIndex.ToString());
    ViewState["id"] = i.ToString();
    loadGrid(i);
    }
    // i page load
    if (!IsPostBack)
    {
    loadGrid(0);
    }
    //i loadGrid
    private void loadGrid(int i)
    {
    if (ViewState["id"] == null)
    Label2.Text = i.ToString();
    else
    {
    Label2.Text = "ViewState: " + ViewState["id"].ToString();
    i = Convert.ToInt32(ViewState["id"].ToString());
    }
    RadioButtonList1.SelectedIndex = i;
    switch (i)
    {
    case 0:
    sql = ";";
    break;
    case 1:
    sql = ";";
    break;
    case 2:
    sql = ";";
    break;
    case 3:
    sql = ";";
    break;
    case 4:
    sql = "";
    break;
    }//jag har raderat sqlrna de fungerar bra och de behövs inte visas
    PagedDataSource objPDS = new PagedDataSource();
    objPDS.DataSource = Webbutill.fillDs(DBConn, sql, "Titlar").Tables["Titlar"]
    .DefaultView;
    objPDS.AllowPaging = true;
    objPDS.PageSize = 23;
    objPDS.CurrentPageIndex = myCurrentPageIndex;
    lbAntalSidor.Text = Webbutill.getAntalSidor(objPDS);
    GridView1.DataSource = objPDS;
    GridView1.DataBind();
    [/kod]
    Allt fungerar ganska så bra, men så fort som jag skall bläddra vidare, så ställer sig RadioButtonList1 på index 0.
    Hu kan jag göra för att spara värdet? ViewState["id"].ToString() hjälper inte.
    saw
    _______________________
    www.saw.se
    _______________________

  • #2
    Jo det ser ut som den värsta biten är klar.
    För att fixa detta så fick jag ta till gammal beprövad asp...(nej inte riktigt).
    [kod]
    //jag gjorde en enkel textfil som ligger i en bestämd mapp
    private void checkFile()
    {
    string sFile = Webbutill.App_Path() + @"\App_Data\sample.txt";
    FileStream fs = null;
    if (!File.Exists(sFile))
    {
    using (fs = File.Create(sFile))
    {
    }
    }
    }
    //sen i radiobuttonlist selectedindex skrev jag ner resultatet
    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
    {
    int i = Convert.ToInt32(RadioButtonList1.SelectedIndex.ToString());
    writeFile(i.ToString());
    loadGrid(i);
    }
    //..med denna classen
    private static string writeFile(string sId)
    {
    string sOk = "";
    string sFile = Webbutill.App_Path() + @"\App_Data\sample.txt";
    if (File.Exists(sFile))
    {
    using (StreamWriter sw = new StreamWriter(sFile))
    {
    sw.Write(sId);
    }
    }
    return sOk;
    }
    // och läser av den
    private static string readFile()
    {
    string sRead = "";
    string sFile = Webbutill.App_Path() + @"\App_Data\sample.txt";
    if (File.Exists(sFile))
    {
    using (TextReader tr = new StreamReader(sFile))
    {
    sRead=tr.ReadLine();
    }
    }
    return sRead;
    }
    //och använder den så här
    i = Convert.ToInt32(readFile());
    RadioButtonList1.SelectedIndex = i;
    [/kod]
    Den biten blev jag nöjd med. När det gäller <asp:GridView så har jag bara formaterat rowstylemm.
    En fråga, när jag kör mina sqlr så blir det lite olika fält i gridviewn. Har jag någon chans att formatera detta via codebehind? Jag har t ex ett fält med datum som i MySql är sparat som yyyymmdd, men i gridviewn så dyker det alltid upp en massa noller..
    saw
    _______________________
    www.saw.se
    _______________________

    Kommentera


    • #3
      Och även det sista hittade jag
      [kod]
      if (e.Row.RowType == DataControlRowType.Header)
      {
      e.Row.Cells[0].HorizontalAlign = HorizontalAlign.Right;
      }
      if (e.Row.RowType == DataControlRowType.DataRow)
      {
      e.Row.Cells[0].HorizontalAlign = HorizontalAlign.Right;
      e.Row.Cells[5].Text = Convert.ToDateTime(((DataRowView)e.Row.DataItem)
      ["Datum"]).ToString("d");
      }
      [/kod]
      Ja lade in det här ifall det finns någon mer än jag som har haft svårt att fatta de här sakerna.
      saw
      _______________________
      www.saw.se
      _______________________

      Kommentera

      Working...
      X