none
asp list item question RRS feed

  • 問題

  • 想請問....如果有兩個 asp list item , 當A的List item 選擇了一個value, 而B的List item內能否從A 的TABLE 內抽取資料顯現?

    List ItemA - Value A    對照    List ItemB ->   Table-Column A

    List ItemA - Value B    對照    List ItemB ->   Table-Column B

     

    可以嗎???

     

    謝謝

     

     

    2007年1月23日 上午 06:06

解答

  • 這樣問題的描述的確清楚許多,關鍵點我都把字加粗(注意POSTBACK跟SELECT的條件)。

     <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="AccessDataSource1"

                DataTextField="company" DataValueField="company">

            </asp:DropDownList><asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/COMPANY.mdb"

                SelectCommand="SELECT * FROM [Company]"></asp:AccessDataSource>

            <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="AccessDataSource2"

                DataTextField="Dept" DataValueField="Dept">

            </asp:DropDownList><asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/COMPANY.mdb"

                SelectCommand="SELECT * FROM [a-Dept] WHERE ([company] = ?)">

                <SelectParameters>

                    <asp:ControlParameter ControlID="DropDownList1" Name="company" PropertyName="SelectedValue"

                        Type="String" />

                </SelectParameters>

            </asp:AccessDataSource>

    2007年1月23日 上午 08:08
    版主

所有回覆

  • 您好:

           不是很了解您的問題,請問一下,您是指在asp中的Select元件嗎?還是指那個html元素。請您將問題描述清楚。

    2007年1月23日 上午 07:00
  •  您是在說在List中選擇哪些欄位,有一個Table就可以秀出相關欄位嗎?

    如果以上猜測正確,只要透過List的SelectItem去組出SQL語法就可以了。

    如果以上猜測錯誤,希望您能重新描述問題,這樣才有得到正確答案的可能。

    2007年1月23日 上午 07:20
    版主
  •  <asp:DropDownList ID="selCompany" runat="server" DataSourceID="AccessDataSource1" DataTextField="Company">
           
    </asp:DropDownList><asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/Company.mdb"
            SelectCommand="SELECT [Company] FROM [Company] ORDER BY [Company]"></asp:AccessDataSource>

    這是我第一個drop down list 的內容, 是首先選擇公司名稱

    <asp:DropDownList ID="selSiteDept" runat="server" DataSourceID="AccessDataSource2" DataTextField="Dept">
            
         </asp:DropDownList><asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/Company.mdb"
            SelectCommand="SELECT [Dept] FROM [a-Dept] ORDER BY [Dept]"></asp:AccessDataSource>

    這是第二個drop down list 是選擇部門

    我的意思是..當我選擇A 公司後, 在第二個DROP DOWN LIST 可SELECT 從A 公司的部門MDB

    如當我選擇B公司後, 就有B公司的部門名稱

    這會明白嗎?  請指教我可如何做?

    謝謝

    2007年1月23日 上午 07:43
  • 這樣問題的描述的確清楚許多,關鍵點我都把字加粗(注意POSTBACK跟SELECT的條件)。

     <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="AccessDataSource1"

                DataTextField="company" DataValueField="company">

            </asp:DropDownList><asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/COMPANY.mdb"

                SelectCommand="SELECT * FROM [Company]"></asp:AccessDataSource>

            <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="AccessDataSource2"

                DataTextField="Dept" DataValueField="Dept">

            </asp:DropDownList><asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/COMPANY.mdb"

                SelectCommand="SELECT * FROM [a-Dept] WHERE ([company] = ?)">

                <SelectParameters>

                    <asp:ControlParameter ControlID="DropDownList1" Name="company" PropertyName="SelectedValue"

                        Type="String" />

                </SelectParameters>

            </asp:AccessDataSource>

    2007年1月23日 上午 08:08
    版主
  • 你好...我根據你提供給我的程式碼, 發覺有的問題, 想再問一問

    1. 我的 select commadn 是.....SelectCommand="SELECT * FROM [a-Dept] where ([company] = CompanyA) ">, 就出現以下錯誤信息

    無值提供給一或多個必要參數。

    描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

    例外詳細資訊: System.Data.OleDb.OleDbException: 無值提供給一或多個必要參數。

    原始程式錯誤:

    在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。

     

    當我刪除where 之後的字句, 就沒有問題, 但當然只有a-Dept 的名稱出現, 不知道那裡出現錯誤

    2. 我有幾間公司及部門, 是否我要每間公司都要有一個由selectcommand...至</selectparameters>

     

    請指教..謝謝

    2007年1月25日 上午 03:10
  • 您的問題我們可以從下列程式碼來看:

    <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/COMPANY.mdb"

                SelectCommand="SELECT * FROM [a-Dept] WHERE ([company] = ?)">

                <SelectParameters>

                    <asp:ControlParameter ControlID="DropDownList1" Name="company" PropertyName="SelectedValue"

                        Type="String" />

                </SelectParameters>

     

    SelectCommand="SELECT * FROM [a-Dept] WHERE ([company] = ?)"中,我們可以看到where條件中設定了一個參數

     「?」,然後從<SelectParameters>...</SelectParameters>中,我們也設定了參數的來源是下拉選單1(DropDownList1)所選

    的值(參數的名字為company,來源控制項為DropDownList1),所以說不必每一個公司都要寫一個selectcommand。

    2007年1月25日 上午 03:24
    版主
  • 你好...

    我已經將SelectCommand="SELECT * FROM [a-Dept] WHERE ([company] =CompanyA)" 改為

    SelectCommand="SELECT * FROM [a-Dept] WHERE ([company] = ?)"

    但如果都是一樣, 出之前的錯誤信息, 不知那裡出錯呢

    另有一問題, 我不明白在selectcommand 中的 from [a-dept] 已經指定了由a-dept 這個table 抽取資料,

    但你話selectparameters 可根據dropdowmlist 內的選擇而抽取不同的table 資料, 它從可而知我第二或第三個table 名字呢

    因在selectcommand 內不是指定了只得一個table name 嗎?

    請指教..謝謝

     

    2007年1月25日 上午 06:55
  • 一、您要不要提供一下您目前的Code及Access裡的Table Layout,這樣才好釐清問題之所在。

     

    二、各公司及部門別不是存放在同一個Table中?從您的敘述中好像不是這樣,這樣在設計上比較不方便,何不放在一起,或另開一個Table來存放。

    2007年1月25日 上午 07:19
    版主
  • <form id="form1" runat="server">
        Please Select Company :
        <asp:DropDownList ID="selCompany" runat="server" AutoPostBack="True " DataSourceID="AccessDataSource1" DataTextField="Company" datavaluefield="Company">
          
        </asp:DropDownList>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/Company.mdb"
            SelectCommand="SELECT [Company] FROM [Company] "></asp:AccessDataSource>
            Site / Dept :
            <asp:DropDownList ID="selSiteDept" runat="server" DataSourceID="AccessDataSource2" DataTextField="Dept" datavaluefield="Dept">
            
         </asp:DropDownList>
         <asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/Company.mdb"
            SelectCommand="SELECT * FROM [Dept] where ([Company]=?)  ">
           
            <SelectParameters>
                <asp:ControlParameter ControlID="selCompany" Name="Company" PropertyName="SelectedValue" Type="string" />
                </SelectParameters>
            </asp:AccessDataSource>

     

    這是我的coding

    另mdb已根據你的意思改為....

    company.mdb

    table - dept

    field - dept1, dept2, dept3

     

    這資料足夠嗎? 謝謝

    2007年1月25日 上午 08:26
  • Dept的設計不該是這個樣子的。

    建議應該設計成Company,dept就好,例如:

    company     dept

    ----------    --------

    公司A         人事部門

    公司A         財務部門

    公司A         資訊部門

    公司B         人事部門

    公司B         資訊部門

    公司C         人事部門

    -------------------------

    當我們從第一個下拉選單中選到公司A,則第二個下拉選單的SelectCommand則會是:Select * From dept Where company = ?(公司A),這樣就可以帶出三個部門在第二個下拉選單中。

     

    以上淺見,供您參考。

     

     

    2007年1月25日 上午 08:44
    版主
  • 多謝你...我已做到了,

    當出現了另一個問題, 就是當我用ie 去執行時 http://localhost/test/program.aspx

    就出現了以下信息

    找不到 'c:\inetpub\wwwroot\Company.mdb' 檔案。

    描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

    例外詳細資訊: System.Data.OleDb.OleDbException: 找不到 'c:\inetpub\wwwroot\Company.mdb' 檔案。

    原始程式錯誤:

    但在 web developer 內執行就沒有這問題

    我已將DataFile="~/Company.mdb" 改為 DataFile="/test/Company.mdb"..都是一樣..不知為何???

    我發覺好多時同web developer 執行都沒有問題, 但用ie 就唔得

    如...ImageUrl="~/images/pic.gif"...當我改為ImageUrl="/test/images/pic.gif"...圖形就可以出現

    不知是否在 IIS 內有什麼setting 要做呢??

    請指教..謝謝

    2007年1月30日 上午 08:12
  • .MDB檔案有無複製到相對的位置?

    必須放置在c:\inetpub\wwwroot\網站名\COMPANY.mdb'底下image檔案同理,需放在image的資料夾內。

    2007年1月30日 上午 08:23
    版主
  • 當然有...如不是在web developer 內執行時就會有相同的問題出現.

     

    2007年1月31日 上午 02:26
  • 在IIS中有將此網站建立起來嗎?如果有的話就很奇怪,在IIS中您的網站怎會去上一層抓資料庫。

    建立網站方式在IIS中,選擇您欲建立的網站->內容,然後在如下的畫面中,按建立來建立網站。

     

    2007年1月31日 上午 03:19
    版主