【问题标题】:Binding LINQ query to Dropdownlist C#将 LINQ 查询绑定到 Dropdownlist C#
【发布时间】:2016-05-31 14:16:55
【问题描述】:

我想知道如何将我编写的这个 linq 查询绑定到 C# Web 应用程序中的下拉列表。它正在调用一个 XML 文件。我会发布一些 XML,但它的价值是 2k 行,所以我只会发布一个 sn-p。

 public void ddlBinding()
        {

            // Getting the XML file imported in
            string filePath = @"C:\Projects\MEAS\Central\MillView\PVDA\Main\PVDA\PVDA.Web\MillData.xml";
            // Set the file path
            XDocument xDoc = XDocument.Load(filePath);

            // Setting a variable to dump the data into the dropdownlist
            var dropDownDataList = GetMachineInfo(xDoc, 2);


        }

        // LINQ Queries for binding
        public List<Machine> GetMachineInfo(XDocument xDoc, int machineNumber)
        {
            // Get the elements under a specific machine and create
            // a list of Machine objects
            // Different Linq queries to get the machine data entered
            // This needs to be incorporated for the mill also, this does not get the mill name
            return xDoc.XPathSelectElements("./mmsdata/mill/mach")
                               .Where(x => x.Attribute("n").Value == machineNumber.ToString())
                               .Elements()
                               .Select(x => new Machine
                               {
                                   sensName = x.Value,
                                   snsrN = Convert.ToInt32(x.Attribute("n").Value),
                                   calctype = x.Attribute("calctype").Value
                               }).ToList();
        }

        public class Machine
        {
            // Getting all the objects to the machine
            public int snsrN { get; set; }
            public string calctype { get; set; }
            public string sensName { get; set; }

        }

<?xml version="1.0" encoding="UTF-8"?>
<mmsdata>
	<timestamp>Fri Jan 30 08:46:13 EST 2015</timestamp>
	<mill n="AG" name="Augusta, GA">
		<ds>
			<server>agppra</server>
			<server>agpprb</server>
		</ds>
		<mach n="1">
			<srn n="1" calctype="2CV">RL.CLP (1)</srn>
			<srn n="3" calctype="2CV">RL.CTWTIR (3)</srn>
			<srn n="4" calctype="2CV">RL.CTWTBETA (4)</srn>
			<srn n="6" calctype="2CV">RL.DNS (6)</srn>
			<srn n="7" calctype="2CV">RL.BSWT (7)</srn>
			<srn n="8" calctype="2CV">CA.BSWT (8)</srn>
			<srn n="9" calctype="2CV">SP.BSWT (9)</srn>
			<srn n="10" calctype="RAW">RL.MST (10)</srn>
			<srn n="11" calctype="RAW">CA.MST (11)</srn>
			<srn n="12" calctype="RAW">SP.MST (12)</srn>
			<srn n="13" calctype="2CV">RL.BNDRWT (13)</srn>
			<srn n="14" calctype="2CV">CA.BNDRWT (14)</srn>
			<srn n="15" calctype="2CV">SP.BNDRWT (15)</srn>
			<srn n="71" calctype="2CV">RL.ICMST (71)</srn>
			<srn n="72" calctype="2CV">CA.LATEX (72)</srn>
			<srn n="73" calctype="2CV">RL.COLOR (73)</srn>
			<srn n="74" calctype="2CV">RL.CLAY (74)</srn>
			<srn n="75" calctype="2CV">RL.LATEX (75)</srn>
			<srn n="76" calctype="2CV">CA.CLAY (76)</srn>
			<srn n="77" calctype="2CV">CA.ICMST (77)</srn>
			<srn n="78" calctype="2CV">CA.ICCTWT (78)</srn>
			<srn n="91" calctype="2CV">CTRL.HDBOXSP (91)</srn>
			<srn n="92" calctype="2CV">CTRL.CTWTSP (92)</srn>
			<srn n="93" calctype="2CV">CTRL.HDBOXFB (93)</srn>
			<srn n="94" calctype="2CV">CTRL.CTWTFB (94)</srn>
		</mach>
		<mach n="2">
			<srn n="1" calctype="2CV">RL.CLP (1)</srn>
			<srn n="4" calctype="2CV">RL.CTWTBETA (4)</srn>
			<srn n="7" calctype="2CV">RL.BSWT (7)</srn>
			<srn n="8" calctype="2CV">CA.BSWT (8)</srn>
			<srn n="9" calctype="2CV">SP.BSWT (9)</srn>
			<srn n="10" calctype="RAW">RL.MST (10)</srn>
			<srn n="11" calctype="RAW">CA.MST (11)</srn>
			<srn n="12" calctype="RAW">SP.MST (12)</srn>
			<srn n="13" calctype="2CV">RL.CNDWT (13)</srn>
			<srn n="14" calctype="2CV">CA.CNDWT (14)</srn>
			<srn n="15" calctype="2CV">SP.CNDWT (15)</srn>
			<srn n="81" calctype="RAW">IC.MSTCS (81)</srn>
			<srn n="82" calctype="2CV">IC.CTWT1 (82)</srn>
			<srn n="84" calctype="RAW">RL.MSTCS (84)</srn>
			<srn n="85" calctype="2CV">RL.CTWT2 (85)</srn>
			<srn n="86" calctype="2CV">RL.CTWTIR (86)</srn>
			<srn n="91" calctype="RAW">CTRL.HDBOXSP (91)</srn>
			<srn n="93" calctype="2CV">CTRL.THRMOSP (93)</srn>
			<srn n="94" calctype="2CV">CTRL.CTWTSP (94)</srn>
		</mach>

【问题讨论】:

标签: c# xml linq binding


【解决方案1】:

由于您已经有一个计划绑定到 DropDownList 的元素集合,您只需确定哪些属性将用于 TextValue

// Bind your Machines to your DropDownList
MachinesDropDown.DataSource = GetMachineInfo(xDoc, 2);
// Set your text / value properties
MachinesDropDown.DataTextField = "snsrN";
MachinesDropDown.DataValueField = "orignalPathId";
// Actually bind the contents to be reflected in the UI
MachinesDropDown.DataBind();

【讨论】:

  • 这只会添加 的信息。我不仅需要带有“2”的那些,我还有多个不同的,一直到 40。有没有不同的方法来添加这些数字,因为我无法添加逗号来分隔它们?
【解决方案2】:
yourddl.DataSource=dropDownDataList;
yourddl.DataValueField=<value-property name>;

yourddl.DataTextField=<text-property name>;
yourddl.DataBind();

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多