webForumDet fria alternativet

Problem med RadioButtonList och paging

2 svar · 400 visningar · startad av saw

sawMedlem sedan mars 20011 880 inlägg
#1

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.

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 sql:erna 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();

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. :stud

sawMedlem sedan mars 20011 880 inlägg
#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).

//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;

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 sql:er 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.. :stud

sawMedlem sedan mars 20011 880 inlägg
#3

Och även det sista hittade jag

 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");
}

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. :p

128 ms totalt · 3 externa anrop · v20260731065814-full.ca5a5675
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)