iT邦幫忙

0

HTML <select>下拉選單疑惑

上次發文可能不夠清楚? 這次打的詳細一點

想請問各位高手下拉選單內的資料
除了自己一筆一筆新建外,可不可以直接連結資料庫呢

可以的話我原本但我查詢系統的主要Table和下拉選單內容的Table,在SQL sever內新建時有需要先做什麼設定嗎

還是兩個可以獨立新建呢

1
EN
iT邦研究生 3 級 ‧ 2021-07-04 13:57:21
最佳解答

為什麼我還是看不太懂你的問題 XDDD
如果要根據 SQL 上的資料建立 Select item 的話,只要從資料庫拉完資料並且在後端那邊用 for loop 把資料填充進去不就好了(?)

看更多先前的回應...收起先前的回應...

拉資料是指在哪裡拉資料呢,不好意思因為剛入門,我是用MVC的環境,但上網找也只有PHP的範例QQ

EN iT邦研究生 3 級 ‧ 2021-07-07 00:15:42 檢舉

社會小菜鳥
請參考 Asp.net MVC: 連線資料庫、簡單實作 CRUD ,裡面有將 SQL 的資料使用 foreach 印到 html 上的實作。

謝謝您!我研究看看

EN iT邦研究生 3 級 ‧ 2021-07-07 00:18:53 檢舉
0
Todd
iT邦新手 4 級 ‧ 2021-07-04 15:22:47

是指動態生成select option 嗎?
如果是要根據資料庫的資料來產生option
不就是call api後,拿那筆response利用迴圈生成出來嗎?
這兩件事情是有關,但是是分開設定的。

通常實務上是看後端的api格式來決定你這個「迴圈」的實作
要取哪些field、哪些是什麼格式之類的。

所以我從api進到方法後,利用迴圈生連結前端嗎

0
japhenchen
iT邦大師 1 級 ‧ 2021-07-05 07:59:56

也可以用ajax去拉任一層的選單資料,而不是全部寫死或在開網頁時一次讀進所有的階層選單內容,對伺服器和瀏覽器和頻寬而言負擔會比較小

以郵遞區號資料來講,跟用戶對賭,如果用戶只點台北市→萬華區→XX路→幾號到幾號,四個動作就完成,而不是在頁面上漫游,那你節省下來的資料傳輸量就是一大筆

不過,寫MCV習慣的,可能會對ajax感覺...礙手礙腳,畢竟平台上已經有SqlDataSource可用,我不喜歡MCV的理由,就是太多看不見的動作,還有PostBack..我一直都弄不懂..

froce iT邦大師 1 級 ‧ 2021-07-05 08:41:12 檢舉
  1. web framework的MVC一直都不是真正的MVC

  2. 我常說微軟最擅長的就是把複雜的變簡單,把簡單的變複雜。有資料格式能交換、能接post、get等http method就能做ajax,經過微軟的包裝就會莫名其妙的變複雜。

  3. PostBack應該是微軟已經幫你處理好封裝接收post的步驟,後面你要實現的邏輯就寫在PostBack裡面而已。也就是收到post後的callback。我沒實際寫.net MVC,不過之前維護webform的時候有用過。

  4. Django一本使用手冊厚度大概微軟.net MVC教學書的1/3,我曾經買過並且想過要來學.net MVC,但看到那個書的厚度我就放棄了。XD

最後,維護過webform的話...
我最討厭哪種一下子前端要寫sql去select、一下子要在後端寫的狀況了。

我連MVC跟MCV都能搞混,哈

我現在在VisualStudio上也完全不用Runat Server的事,少了看不見的動作,就可以更好工作

0
大毛
iT邦新手 5 級 ‧ 2021-07-07 11:01:18

寫了一個例子 參考看看
前面

<asp:DropDownList ID="dlist_example" runat="server"></asp:DropDownList>

後面

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

    }
protected void select_site()
    {
        dlist_example.Items.Clear();
        string str_sql = "select字串";
        DataTable dt_example = new DataTable();
        dt_example = //資料庫撈出來的資料;

        ListItem list_s = new ListItem();
        list_s.Value = "00";
        list_s.Text = "請選擇";
        dlist_example.Items.Add(list_s);

        for (int i = 0; i < dt_example.Rows.Count; i++)
        {
            ListItem list_l = new ListItem();
            list_l.Value = dt_animal.Rows[i]["欄位1"].ToString().Trim();
            list_l.Text = dt_animal.Rows[i]["欄位2"].ToString().Trim();
            dlist_example.Items.Add(list_l);

        }
    }

我要發表回答

立即登入回答