Dienstag, Januar 21, 2020

ASP.NET Radio-Button-Liste | SelectedValue kommen NULL

Ich habe eine ähnliche RBL Frage habe ich aber ein neues Problem entstehen, so dass ich dachte, ich würde einen neuen Eintrag machen.

Hier ist mein code:

Page_Load

protected void Page_Load(object sender, EventArgs e)
{
    //Output Success/Error Message
    if (Session["formProcessed"] != null)
    {
        Label lblMessage = (Label)Master.FindControl("lblMessage");
        new Global().DisplayUserMessage("success", Session["formProcessed"].ToString(), lblMessage);
    }
    Session.Remove("formProcessed");

    if (Page.IsPostBack == false)
    {
        rblContentTypesGetAll.DataBind();
    }
}

rblContentTypesGetAll_Load

 protected void rblContentTypesGetAll_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataTable dt = new DataTable();
        using (SqlConnection con = new SqlConnection(Global.conString))
        using (SqlCommand cmd = new SqlCommand("contentTypeGetAll", con))
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        {
            da.Fill(dt);
        }
        //Clear Items before reloading
        rblContentTypesGetAll.Items.Clear();

        //Populate Radio button list
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            rblContentTypesGetAll.Items.Add(new ListItem(dt.Rows[i]["contentType"].ToString() + " - " + dt.Rows[i]["description"].ToString(),
                dt.Rows[i]["ID"].ToString()));
        }

        //Set Default Selected Item by Value
        rblContentTypesGetAll.SelectedIndex = rblContentTypesGetAll.Items.IndexOf(rblContentTypesGetAll.Items.FindByValue(((siteParams)Session["myParams"]).DefaultContentType.ToLower()));
    }

}

HTML/ASP.NET-front-end –

 <asp:RadioButtonList id="rblContentTypesGetAll" OnLoad="rblContentTypesGetAll_Load"  runat="server">
        </asp:RadioButtonList>

Sobald ich das Formular abschicken es scheint, die selectedValue leer wird. Was mache ich, das ist so offensichtlich falsch?

InformationsquelleAutor balexander | 2011-02-23

4 Kommentare

  1. 4

    Obwohl alle von Euch waren hilfreich, das Problem war viel tiefer. Ich hatte viewState deaktiviert.

    • Ich möchte zu töten den view-state
  2. 1

    Alle den code in Ihre Page_Load muss drin sein:

    if(Page.IsPostBack  == false)

    Sind Sie wieder-Befüllen der Liste, wenn die Seite übermittelt wird, wodurch die Liste neu gefüllt werden, und damit verlieren die vorherigen Gegenstände einschließlich von denen man gewählt wurde.

    http://gurustop.net

    • Es scheint, der Wert verschwindet sofort nach dem drücken des submit-Buttons. Ich wickelte die DataBind-in dem, was Sie oben gepostet.
  3. 0

    Versuchen, indem Sie Ihre erforderliche Bindung in der page_load-nicht vergessen (!IsPostBack)

    • Was ich fragte ist zum binden in die Seite laden, anstatt der radio button laden
  4. 0

    Die einzige Sache, die ich denke, dass könnte passiert sein wird, wenn Sie den ursprünglichen ausgewählten index hier:

    rblContentTypesGetAll.SelectedIndex = rblContentTypesGetAll.Items.IndexOf(rblContentTypesGetAll.Items.FindByValue(((siteParams)Session["myParams"]).DefaultContentType.ToLower()));

    könnte es nicht finden, den Wert und dann die Einstellung „-1“. Dann, wenn Sie nicht immer wählen Sie eine radio-Taste auf der Seite, die Sie erhalten würden, keinen ausgewählten Wert.

    Ich versuchte dies und es schien in Ordnung:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //Pretending to call your stored proc..
                DataTable dt = new DataTable();
                dt.Columns.Add("contentType");
                dt.Columns.Add("description");
                dt.Columns.Add("ID");
                dt.AcceptChanges();
                for (int i = 0; i < 6; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["contentType"] = "cnt" + i.ToString();
                    dr["description"] = "desc" + i.ToString();
                    dr["ID"] = i.ToString();
                    dt.Rows.Add(dr);
                }
    
    
                //Populate Radio button list
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    rblContentTypesGetAll.Items.Add(new ListItem(dt.Rows[i]["contentType"].ToString() + " - " + dt.Rows[i]["description"].ToString(),
                        dt.Rows[i]["ID"].ToString()));
                }
    
                //Set Default Selected Item by Value
                rblContentTypesGetAll.SelectedIndex = 0; //this could be -1 also
            }
    
            lblMessage.Text = "rblContentTypesGetAll.SelectedValue :" + rblContentTypesGetAll.SelectedValue;
    
        }
    • So komisch…ich fühle mich wie dieses Problem ist so einfach. Ich versuchte dies und es war noch die übermittlung eines leeren Wert. Die Liste füllt und die Werte haben Wert. Ich weiß nicht, was bewirkt, dass die Liste zu verschwinden.
    • Den ausgewählten Wert zu löschen, sofort nachdem Sie „senden“ drücken, bevor es geht sogar durch den code hinter
    • Es muss etwas fehlen, versuchen Sie die Einnahme aus der master-Seite und javascript nicht angezeigt, der code oben funktioniert, so gibt es einige außerhalb der code-messing mit dem radio-button-Liste.

Kostenlose Online-Tests