簡單的範例,為何出錯?

摘要:簡單的範例,為何出錯?

 

這是一個很簡單的題目,但出了錯,我們來看看錯在哪裡???

 

 

 題  目:

      點選 ListBox裡面的文章標題,然後 EntityDataSource出現這篇文章的詳細內容。

      透過後置程式碼來寫。  

      本範例改寫自:http://msdn.microsoft.com/zh-tw/library/bb738575.aspx

 

 

HTML畫面:

01     <form id="form1" runat="server">
02     <div>
03         請挑選一篇文章:&nbsp;
04         <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
05         &nbsp;&nbsp;&nbsp;
06         <asp:Button ID="Button1" runat="server" Text="Submit" />
07          
08         <hr />內容如下:<br />
09         <br />
10          
11         <asp:Label ID="Label1" runat="server"></asp:Label>
12         <br />
13         <asp:Label ID="Label2" runat="server"></asp:Label>
14         <br />
15         <asp:Label ID="Label3" runat="server"></asp:Label>
16  
17     </div>
18     </form>

 

 

後置程式碼:(有問題

Imports System
Imports System.Collections.Generic
Imports System.Collections
Imports System.ComponentModel
Imports System.Text

Imports System.Data
Imports System.Data.Objects
Imports System.Data.Objects.DataClasses

'==============================
Imports testModel   '==自己做的 Entity Model
'==============================

    Private u_context As testEntities

    Dim u_id As Integer = 0

 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

            Using (u_context = New testEntities())

                Try
                    ' -- 列出所有資料
                    Dim u_Query As ObjectQuery(Of test) = u_context.test

                    ' Display the 文章編號(id) in the ListBox.
                    ListBox1.DataTextField = "title"
                    ListBox1.DataValueField = "id"

                    ListBox1.DataSource = u_Query.Execute(MergeOption.AppendOnly)
                    ListBox1.DataBind()

                Catch ex As EntitySqlException
                    Response.Write(ex.Message)
                End Try
            End Using
        End If

    End Sub


    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        u_id = CInt(ListBox1.SelectedValue)

        Dim u_Query As ObjectQuery(Of test) = u_context.test.Where("it.id = @test_id", New ObjectParameter("test_id", u_id))

        Dim queryResult As ObjectResult(Of test) = u_Query.Execute(MergeOption.AppendOnly)
        For Each u_Result As test In queryResult
            Label1.Text = u_Result.title.ToString()
            Label2.Text = u_Result.summary.ToString()
            Label3.Text = u_Result.article.ToString()
        Next
    End Sub
 

 

錯誤訊息:

      並未將物件參考設定為物件的執行個體

 

==============================================================

 

失敗為成功之母。

Bug是寫程式的人,最好的老師!

      如果能抓到自己盲點,知道錯誤在哪裡,也能解決它。

      這才真正能學到東西

 

修改後的後置程式碼(VB):

    Private u_context As testEntities = New testEntities()

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Using (u_context)
                    ' -- 這部份的程式沒有變化,不贅述
            End Using
        End If

    End Sub


    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim u_id As Integer = CInt(ListBox1.SelectedValue)

            Using (u_context)
                    ' -- 這部份的程式沒有變化,不贅述
            End Using
    End Sub
..............................................................................................................................................................................

 

修改後的後置程式碼(C#):

    private testEntities u_context;


    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {

            using (u_context = new testEntities())
            {
                try
                {
                    // -- 列出所有資料
                    ObjectQuery<test> u_Query = u_context.test;

                    // Display the 文章編號(id) in the ListBox.
                    ListBox1.DataTextField = "title";
                    ListBox1.DataValueField = "id";

                    ListBox1.DataSource = u_Query.Execute(MergeOption.AppendOnly);
                    ListBox1.DataBind();
                }
                catch (EntitySqlException ex)
                {
                    Response.Write(ex.Message);
                }
            }
        }
    }


    protected void Button1_Click(object sender, EventArgs e)
    {
        int u_id = Convert.ToInt32(ListBox1.SelectedValue);

        using (u_context  = new testEntities())
        {

             ObjectQuery<test> u_Query = u_context.test.Where("it.id = @test_id", new ObjectParameter("test_id", u_id));

             ObjectResult<test> queryResult = u_Query.Execute(MergeOption.AppendOnly);

             foreach(test u_Result in queryResult)
             {
                 Label1.Text = u_Result.title.ToString();
                 Label2.Text = u_Result.summary.ToString();
                 Label3.Text = u_Result.article.ToString();
             }

       }
    }
 

 

 

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估