遠程教育系統總結

來源:互聯網
上載者:User
線上答題模組遇見的問題及解決方式:
怎樣解決在DataList中動態綁定RadioButtonList?
必須擷取datalist中每一datalistitem綁定的QuestionID,這樣才可以根據Questionid再次從資料庫中取出問題的options,該怎麼取呢?

<%# zhixia.TestOnline.Global.CopyInt(ref i,Eval("QuestionID").ToString())%>
再頁面中聲明一個變數I,再頁面中使他擷取<%# Eval("QuestionID")%>的值。
然後再DATALIST_itemDataBound()事件中使用變數I即可。
也可以使用 int qid = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);擷取datakey的值,而我們把datakey已設為QuestionID。
Questionid已取出,我們可以調用controller裡面的方法擷取資料,然後綁定即可。

怎樣判斷答題是否正確?
必須擷取使用者選擇了哪個選項與正確答案是哪個,即擷取radiobuttonList的selectindex及擷取當前item的answer值。擷取radiobuttonlist的值很好辦,如果使用者觸發selectindexchanged事件,即可從觸發對象中擷取,而answer值該怎麼取呢?
想來想去,終於想出可以再datalistitemdatabound事件中,把answer值放入radionbuttonlist的attributes 中儲存,然後再selectindexchanged事件中,擷取觸發事件的當前對象並同時擷取attribute值,即可。這樣就可以了,看來attributes真是好用啊!

怎樣判斷當前textbox提交資料為空白?
Microsoft.VisualBasic..CompilerServices中有一個Stringtype類,裡面有個strcmp函數很好用。
直接這樣:if(StringType.StrCmp(TextBox2.Text,"",false)!=0)就可以了

在設計中,我使用了企業程式庫及dotnetnuke裡面的封裝資料到實體類的方法。
封裝如下:
封裝多個實體:     
        public static IDataReader GetAllQuestion()
        {
            return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, dbo + "GetAllQuestion");
        }
        public ArrayList GetAllQuestion()
        {
            return CBO.FillCollection( SqlDataProvider.GetAllQuestion(),typeof(QInfor));   
        }

封裝單個實體

         public static IDataReader GetQuestion(int QuestionID)
        {
            return (IDataReader)SqlHelper.ExecuteReader(ConnectionString, dbo + "GetQuestion", QuestionID );
        }
        public QInfor GetQuestion(int QuestionID)
        {
            return (QInfor)CBO.FillObject(SqlDataProvider.GetQuestion(QuestionID), typeof(QInfor));
        }

在搜尋模組裡,碰見的問題有:
怎樣反射一個類?代碼如下:

  public static ASearch MakeSearch(string style, string key)
    {
        ASearch asearch = null;
        try
        {
//擷取搜尋類型,如style=主題,就建立主題搜尋實體類,及ZSearch類。key為搜尋索引鍵
            Type type = Type.GetType(style, true);
            Guid g = type.GUID;
            object[] para=new object[]{key};
//建立實體類,並提供para參數初始化實體類即ZSearch類,我原以為這裡會初始化抽象函數,原來沒有!
            asearch = (ASearch)Activator.CreateInstance(type, para);
            return asearch;
        }
        catch (TypeLoadException ex)
        {
            System.Console.Write(ex);
        }
        return asearch;
    }

現在可以動態擷取實體類,如使用者選擇主題搜尋,我們就可以建立主題類,即ZSearch 類。但搜尋資料需調用相應的預存程序,我們不可能把預存程序名寫入程式中,這樣就失去了靈活性,這樣也就失去了原廠模式的意義,突然,我想到了config設定檔的使用,我們可以動態調用config檔案裡的預存程序名稱,這樣就可以達到目的。我們又怎樣去調用預存程序呢?
config檔案資料如下:  <appSettings>
    <add key="SearchKecheng" value="SearchKecheng"></add>
    <add key="Searchjiangshi" value="Searchjiangshi"></add>
    <add key="Searchzhuti" value="Searchzhuti"></add>
  </appSettings>

設定實體類中的變數值為:
public string _sps = ConfigurationManager.AppSettings["Searchjiangshi"];

這樣如果我們要增加新的一種搜尋方式可以添加:
比如“搜尋所有項”
一個預存程序,SearchAll
一個類AllSearch 繼承ASearch抽象類別。
在index。aspx的dropdownlist控制項中增加一項“所有”,並設定value為“SearchAll”,
值得注意的是:value值必須與類實體名稱一致,不然就會exception。
好了,大功告成,我還做了一個類架構圖,有空看看! protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        RadioButtonList rbl = (RadioButtonList)e.Item.FindControl("RadioButtonList1");
        //int qid = i;
        int qid = Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex]);
        //rbl.Attributes["answer"] = answer;
        rbl.Attributes["answer"] = DataBinder.Eval(e.Item.DataItem, "answer").ToString();
        rbl.Attributes["QuestionID"] = Convert.ToString( qid);

        QOpController qc = new QOpController();
        rbl.DataSource = qc.GetOption(qid);
        rbl.DataBind();
    } 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.