سؤال

ومرحبا بكم جميعا أنا أعمل على القليل من المشروع حيث أنا إضافة عناصر تحكم إلى صفحة يستند إلى جدول SQL من الأسئلة، وهذا الجدول سوف تنمو الوقت بدل الضائع. أردت فقط أن نشارك في رمز ومعرفة ما إذا كان هناك أي طريقة أفضل أو إذا كان أي من الخبراء يمكن أن تتناغم وتعطيني أي فكرة عن مشاكل في المستقبل. هنا هو رمز:

       protected void Page_Load(object sender, EventArgs e)
    {
        try
        {

            SqlParameter[] paramz = new SqlParameter[1];
            paramz[0] = new SqlParameter("@c_id", 1);

            dt = SqlHelper.ExecuteDataTable(ConfigurationManager.ConnectionStrings["sql"].ToString(), CommandType.StoredProcedure, "get_Questions", paramz);
            clinicName.Text = "<b>" + dt.Rows[0]["Clinic Name"].ToString();

            for(int row = 0; row <= dt.Rows.Count; row++)
            {
                if (row == dt.Rows.Count) //if we're on the last question put a break for spacing(this could be fixed with styling)
                {
                    Literal alit = new Literal();
                    alit.Text = "<br/>";
                    questionsPanel.Controls.Add(alit);
                }
                else
                {
                    addQuestion(dt.Rows[row], row);
                }
            }

        }
        catch (Exception err)
        {
            Response.Write(err.Message);
        }

    }

    private void addQuestion(DataRow row, int i)
    {
        Label lbl = new Label();
        lbl.Text = row["question"].ToString();
        questionsPanel.Controls.Add(lbl);

        Literal lit = new Literal();
        lit.Text = "<br/>";
        questionsPanel.Controls.Add(lit);

        TextBox txt = new TextBox();
        txt.ID = "txt" + i.ToString();
        questionsPanel.Controls.Add(txt);

        Literal lit2 = new Literal();
        lit2.Text = "<br/>";
        questionsPanel.Controls.Add(lit2);

    }
هل كانت مفيدة؟

المحلول

استخدم عنصر تحكم مكرر:

ورمز ASPX:

<asp:Repeater id="repData" runat="server">
    <ItemTemplate>
        <asp:Label id="lblQuestion" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "question") %>' />
        <br />
        <asp:TextBox id="lblAnswer" runat="server" />
    </ItemTemplate>
    <FooterTemplate>
        <br />
    </FooterTemplate>
</asp:Repeater>

ورمز وراء:

// Populate repeater
SqlParameter[] paramz = new SqlParameter[1];
paramz[0] = new SqlParameter("@c_id", 1);
dt = SqlHelper.ExecuteDataTable(ConfigurationManager.ConnectionStrings["sql"].ToString(), CommandType.StoredProcedure, "get_Questions", paramz);

repData.DataSource = dt;
repData.DataBind();

نصائح أخرى

وإذا كانت الضوابط إما استخدام أو تسهم في حالة العرض، ثم يجب عليك التأكد من أن نفس الضوابط تضاف إلى حالة العرض في نفس النظام، وعلى كل وظيفة الظهر. الترتيب الذي يتم إضافة الكائنات إلى حالة العرض يعتمد على الترتيب من عناصر التحكم في الشجرة السيطرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top