Поддержка optgroup в dropdownlist.NET MVC?

include_once 'dbh.php'; в пределах ваша функция кажется подозрительной. Что вы будете делать, если у вас есть другие функции, которые также должны выполнять SQL-запросы?

Вместо этого я бы поставил include_once 'dbh.php'; вне (над) вашей функции и, возможно, использовал бы require_once вместо [ 114]. И затем внутри вашей функции поместите global $conn; над вызовом mysqli_query, чтобы ваша переменная $conn определялась там, когда вы передаете ее в mysqli_query.

Однако, если вы беспокоитесь о создании ненужных соединений SQL (например, в случае, если ваша функция lookup никогда не вызывается), я думаю, было бы еще лучше поместить это в ваш dbh.php:

<?php

$conn = null;

function Query($sql)
{
    global $conn;   
    if (!$conn) // will only connect if connection does not exist yet
    {
        $dbServername = 'localhost';
        $dbUsername = 'root';
        $dbPassword = 'xxxxxxxxxxx';
        $dbName = 'Recipe';
        $conn = mysqli_connect($dbServername,$dbUsername,$dbPassword,$dbName);
    }
    return mysqli_query($conn,$sql);
}

?>

И теперь в вашем основном PHP-файле или в любом PHP-файле, в который вы включаете require_once 'dbh.php';, вы можете напрямую использовать Query($sql) для выполнения запросов, которые позаботятся о самом соединении (и делают это только при необходимости). [ 1117]

63
задан Community 23 May 2017 в 12:17
поделиться

2 ответа

Просматривая код www.codeplex.com/aspnet , не кажется, что ни SelectList, ни метод расширения DropDownList не поддерживают использование OptGroup в выборе. Похож необходимо будет записать собственный дополнительный метод и расширить SelectListItem, чтобы содержать группировку или генерировать выбор вручную в разметке.

13
ответ дан tvanfosson 24 November 2019 в 16:09
поделиться

Я просто пишу расширения для этого, посмотрите это:


using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Routing;

namespace System.Web.Mvc.Html
{
    public static class GroupDropListExtensions
    {
        public static string GroupDropList(this HtmlHelper helper, string name, IEnumerable<GroupDropListItem> data, string SelectedValue, object htmlAttributes)
        {
            if (data == null && helper.ViewData != null)
                data = helper.ViewData.Eval(name) as IEnumerable<GroupDropListItem>;
            if (data == null) return string.Empty;

            var select = new TagBuilder("select");

            if (htmlAttributes != null)
                select.MergeAttributes(new RouteValueDictionary(htmlAttributes));

            select.GenerateId(name);

            var optgroupHtml = new StringBuilder();
            var groups = data.ToList();
            foreach (var group in data)
            {
                var groupTag = new TagBuilder("optgroup");
                groupTag.Attributes.Add("label", helper.Encode( group.Name));
                var optHtml = new StringBuilder();
                foreach (var item in group.Items)
                {
                    var option = new TagBuilder("option");
                    option.Attributes.Add("value", helper.Encode(item.Value));
                    if (SelectedValue != null && item.Value == SelectedValue)
                        option.Attributes.Add("selected", "selected");
                    option.InnerHtml = helper.Encode(item.Text);
                    optHtml.AppendLine(option.ToString(TagRenderMode.Normal));
                }
                groupTag.InnerHtml = optHtml.ToString();
                optgroupHtml.AppendLine(groupTag.ToString(TagRenderMode.Normal));
            }
            select.InnerHtml = optgroupHtml.ToString();
            return select.ToString(TagRenderMode.Normal);
        }
}

    public class GroupDropListItem
    {
        public string Name { get; set; }
        public List<OptionItem> Items { get; set; }
    }

    public class OptionItem
    {
        public string Text { get; set; }
        public string Value { get; set; }
    }
}
25
ответ дан 24 November 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: