Repetidor De Marcado:

<asp:Repeater ID="stat_Rptr" runat="server">
                <ItemTemplate>
                    <asp:CheckBox ID="IsSelected_ChkBx" runat="server" Text='<%# Eval("Item") %>' />
                    &nbsp;<asp:TextBox ID="Value_TxtBx" runat="server"></asp:TextBox>
                    <asp:HiddenField ID="ID_HdnFld" runat="server" Value='<%# Eval("ID") %>' />
                </ItemTemplate>
                <SeparatorTemplate>
                    <br></br>
                </SeparatorTemplate>
            </asp:Repeater>

Código-Detrás:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            PopulateStatRptr();
        }
     }


    private void PopulateStatRptr()
    {
        SqlConnection conn;
        SqlCommand comm;
        SqlDataReader reader;

        string _connString = "Data Source=localhost\SqlExpress;Initial Catalog=MyDb;Integrated Security=True";

        conn = new SqlConnection(ConString);
        comm = new SqlCommand("SELECT ID, Item FROM Stats", conn);

        try
        {
            conn.Open();
            reader = comm.ExecuteReader();
            stat_Rptr.DataSource = reader;
            stat_Rptr.DataBind();
            reader.Close();
        }

        finally
        {
            conn.Close();
        }
    }
  • Muy interesante, separador de elección. ¿Por qué no <br/>?
  • 😀 confort Visual
  • Créanme, esto no es visualmente reconfortante.
  • Sólo en la etapa de desarrollo, es para mí 🙂
InformationsquelleAutor Kashef | 2011-07-30

3 Comentarios

  1. 7

    Ok, parece que el Repetidor es una dinámica de control. Si son vinculantes en el código subyacente que tener en cuenta que el cuadro de texto y casillas de verificación en el itemtemplate no existen hasta que DataBind(). Si deshabilita el viewstate, no los verás, a menos que usted databind en cada carga de página. Usted está obteniendo los valores de viewstate en este caso.

    Comprobar este enlace a cabo.

    • Gracias, que trabajó y el repetidor de control y los datos son persistentes .. aunque esto significa que los datos se unen cada vez que una Devolución de datos que sucede!
    • Es totalmente bien para enlazar los datos en cada postback. Debe deshabilitar el viewstate, a menos que usted realmente necesita. Por lo general, hay varios controles en la página que no necesitan viewstate, sino que crea una sobrecarga. Una sola base de datos llamada a veces es mejor que tener la viewsate, dependiendo de la página y la base de datos de rendimiento de la llamada.
    • Realmente esta página es crear un elemento .. este elemento tiene muchas propiedades, y cada conjunto de propiedades están bajo una categoría (los pongo en Divs) y puedo usar los botones para mostrar los divs .. así que puede ser que necesite para ir a la primera div a continuación, vaya a la tercera y volver a la primera para editar o añadir algo y, finalmente, guardar .. así que creo que ViewState es esencial aquí .. y base de datos de las llamadas son mucho también porque necesito recuperar todos los datos en los controles y guardarlos en varias tablas en mi Db
    • Viewstate no tiene nada que ver con nada menos que de publicar los datos de nuevo. Moverse por la página (hasta que finalmente haga clic en guardar), no afecta a viewstate. No estoy seguro de sus requisitos exactos, pero probablemente debería crear un objeto (dependiendo de si tiene sentido como un objeto de negocio) para mantener la totalidad del artículo y enviarlo a la base de datos como xml serializado. En el modo de procesar xml en sql, aquí hay un enlace, stackoverflow.com/questions/2756773/c-send-xml-to-sql
    • He aquí un ejemplo: Div1: Info Personal Div2: Skils N. B I Navegar a través de los 2 divs a través de los 2 botones que muestra el que necesito y oculta los otros divs. Ahora ambos divs contienen controles para introducir algunos datos relacionados, podría entrar en mi nombre en la primera divs y, a continuación, vaya a la segunda divs agregar una habilidad, y tengo que volver a la primera divs para continuar con mi información personal .. este cambio va a suceder mucho, así que tengo que mantener la información persistente en los controles, así que Si puedo cambiar de un div a otro no quiero perder los datos que me entró el primero. Yo espero que obtuvo los requisitos 🙂
    • se puede utilizar la asp.net asistente de control? De lo contrario, tal vez usted puede obtener los datos de una vez, y almacenarlo en la sesión? es mejor evitar el repetidor de control, uso de gridview o listview o algo por el estilo.
    • Lo siento, pero a veces las cosas que usted sabe, de repente se convierte en malo! .. He estado en desarrollo ASP.NET durante más de un año de encendido y apagado .. y yo siempre he usado un repetidor y evitar GridView y DetailsView en todos los libros decían los controles vienen con un montón de grandes y fáciles de usar opciones, pero es mejor no usarlos .. y leer cientos de tutoriales para construir paginación, filtrado, etc el uso de un repetidor, ya que es la más simple y la falta de rendimiento degradantes de control ..lo siento! ¿tienes alguna libros, artículos, nada, porque me siento como que estoy perdido sobre qué controles debo usar ahora =S
    • No quería decir eso. Repetidor da mejor rendimiento, sino que también viene con algunos dolores de cabeza que usted necesita ser muy cuidadoso con los. Lo que me gustaría hacer es hacer otra pregunta en este sentido escuchar la opinión de los otros expertos. Saber de otras personas que han utilizado el repetidor ampliamente o no. y luego tomar una decisión. Su mejor para evitar una charla como la discusión en los comentarios sobre ASÍ.
    • Sí, lo sé, pero como se puede ver, he puesto un comentario y respuesta más tarde. un chat no sería mi mejor opción. pero gracias por responder y para mí los dolores de cabeza son mejores que degradantes mi rendimiento de la aplicación. y Si yo le preguntara a esta pregunta voy a asegúrese de hacerle saber =). +1

  2. 5

    Se unen en Page_Init en lugar de Page_Load.

    • Lo siento, ¿cómo puedo crear un controlador Page_Init ?
    • protected void Page_Init(object sender, EventArgs e)
    • He utilizado el artículo en programador net respuesta (OnInit) y se utiliza el suyo y ambos funciona perfectamente bien, pero no sé si hay alguna diferencia! ..+1 muchas Gracias y si tienes cualquier otra aclaración sería bueno 🙂
  3. 2

    Deshacerse de la if (!IsPostBack) código y llame a su función en todo momento.

    • Ok, Esto va a resolver el problema, pero no creo que sea bueno para Enlazar cada Devolución de datos, Además de que soy de unión 4 CheckBoxLists en la misma forma que yo llamo » de Page_Load en el mismo if(!IsPostBack) condición y funciona bien! .. es muy raro
    • En realidad, por lo general, es una buena idea para enlazar en cada postback. Normalmente pensamos de consultas de base de datos como caro para el rendimiento (y lo son), pero usted sabe lo que es aún más caro? La carga de un gran viewstate de la mitad de todo el país. Incluso rápida de las conexiones de banda ancha a menudo tienen relativamente lento velocidades ascendentes, y el extra de latencia puede hacer que su página de parece más lento, incluso si el tiempo de procesamiento es rápido como un rayo. La excepción, por supuesto, si esto es una página de intranet para la LAN local solamente.
    • Tu comentario tiene sentido +1 .. pero el problema es que acabo de obtener los valores de la Casilla de verificación.Texto, HiddenField.Valor .. pero cuando hago clic en mi botón guardar necesito para recuperar el cuadro de texto.El texto y la Casilla de verificación.Comprueba los valores y almacenarlos en mi base de datos .. de esta manera mi repetidor restablece todo, por lo que los nuevos datos ingresados en mi controles se perderán todos modos!
    • es fácil para mantener el ViewState en el servidor, así que no es realmente relevante para el problema. El resultado de la consulta de base de datos se pueden almacenar en caché o almacenados en la sesión a fin de permitir el enlace de datos en cada Page_Load.
    • Lo siento he Perdido! .. podría reformular lo que se debe hacer o cómo van las cosas para el enlace de datos con una base de datos de la cosa ?
    • Joel – he encontrado que si usted llama a la Página.DataBind() cada vez que se puede perder la devolución de los valores? He tenido un montón de <input type=»text»> elementos, y si puedo activar un botón de devolución, a continuación, sus valores parece que se sobrescribe con el valor original si siempre me databind. Sin embargo, un repetidor parece que lo requieran.

Dejar respuesta

Please enter your comment!
Please enter your name here