NöffMedlem sedan nov. 2003569 inlägg Hej.
Har en datalist med en dropdownlist i. jag fyller dropdownlisten i ItemDataBound.
Men problemet är att den tappar viewstate:en då. finns det nåt annat sätt att fylla dropdownlisten på?, så att viewstaten behålls?. jag har också provat att fylla den genom en funktion som anropas i DataSource=<%# metod() %> , men den behåller heller inte viwestate:n.
Databind inte datalisten vid tillbakapostningar. Det löser problemet.
Jag skrev ett minimalt test. I detta fall behålls viewstate för samtliga dropdownlistor. Om detta exempel inte återspeglar ditt problem ber jag om ursäkt.
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
string sql = "select top 10, * from tblanvändare";
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xxx.mdb");
OleDbCommand command = new OleDbCommand(sql, conn);
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(sql,conn);
adapter.Fill(dt);
DataList1.DataSource = dt;
DataList1.DataBind();
}
}
private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
ArrayList lista = new ArrayList();
lista.Add(1);
lista.Add(2);
lista.Add(3);
lista.Add(4);
DropDownList dd = (DropDownList)e.Item.FindControl("DropDownList1");
dd.DataSource = lista;
dd.DataBind();
}
private void Button1_Click(object sender, System.EventArgs e)
{
//knapp som orsakar postback
}
NöffMedlem sedan nov. 2003569 inlägg jo tack du , men datalisten måste "tåla" att man databinder den igen med nya värden vid postback eftersom datalisten ska byggas på hela tiden med nya items om man trycker på lite knappar och så.