Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建自定义控件C?_C#_.net_Asp.net_Html_Visual Studio 2008 - Fatal编程技术网

C# 如何创建自定义控件C?

C# 如何创建自定义控件C?,c#,.net,asp.net,html,visual-studio-2008,C#,.net,Asp.net,Html,Visual Studio 2008,我试着写我自己的控件。但是我的控件的html有一个问题:看起来像 我的搜索按钮在上面。但我需要的是:我该怎么做 可以将每个控件放置在表格单元格中。或者,您可以将所有内容放置在一个具有固定高度的div中。一个简单的单行表格,按钮上有一个填充将解决您的问题。或者可以输出一个内联样式。您有mainTable,还有PlhControl.Controls.Addnew LiteralControl;-选择一个,不要同时使用两个。好的,你是正确的,但单击我的控件将消失:Bogdan;我这样做了,但我的点击事

我试着写我自己的控件。但是我的控件的html有一个问题:看起来像

我的搜索按钮在上面。但我需要的是:我该怎么做


可以将每个控件放置在表格单元格中。或者,您可以将所有内容放置在一个具有固定高度的div中。

一个简单的单行表格,按钮上有一个填充将解决您的问题。或者可以输出一个内联样式。您有mainTable,还有PlhControl.Controls.Addnew LiteralControl;-选择一个,不要同时使用两个。好的,你是正确的,但单击我的控件将消失:Bogdan;我这样做了,但我的点击事件不起作用。消失我的控制

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls.WebParts; // Ekle
using System.Web.UI.WebControls; // Ekle
using System.Web.UI;
using System.Collections;
using System.Threading;

namespace MyFilterControl
{

    public class FilterControl : WebPart
    {
        internal List<Content> list { get; set; }
        public Button BtnSearch { get; set; }
        public event EventHandler Click;
        public string FilterButtonText { get; set; }
        public String PhID { get; set; }
        internal PlaceHolder PlhControl { get; set; }
        private string controlWidth = "10";
        public FilterControl()
        {

            list = new List<Content>();
            BtnSearch = new Button();
            PlhControl = new PlaceHolder();
            PlhControl.ID = Guid.NewGuid().ToString();
            if (string.IsNullOrEmpty(PhID))
            {
                BtnSearch.ID = "btnSearch";
            }
            else
                BtnSearch.ID = PhID;
            if (string.IsNullOrEmpty(FilterButtonText))
            {
                 BtnSearch.Text = "Search";
            }
            else
                BtnSearch.Text = FilterButtonText;
            BtnSearch.Click += new EventHandler(BtnSearch_Click);
        }
        private Table mainTable = new Table();
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            TableRow tblRow = new TableRow();
            TableCell tblCell1 = new TableCell();

            PlhControl.Controls.Add(new LiteralControl("<table><tr>"));
            tblCell1.Controls.Add(PlhControl);
            TableCell tblCell2 = new TableCell();
            tblCell2.Controls.Add(BtnSearch);
            tblRow.Cells.Add(tblCell1);
            tblRow.Cells.Add(tblCell2);
            mainTable.Rows.Add(tblRow);
            this.Controls.Add(mainTable);
        }
        void BtnSearch_Click(object sender, EventArgs e)
        {
            PlhControl.Controls.Add(new LiteralControl("</tr><table>"));

            foreach (var item in PlhControl.Controls)
            {
                if (item is MyTextBoxControl)
                {
                    MyTextBoxControl t1 = (MyTextBoxControl)item;
                    if (t1.Text != "")
                    {
                        Add(new Content() { FieldName = t1.ID, Data = t1.Text, ID = Guid.NewGuid().ToString(), dataType = t1.dataType, filter=t1.filter });
                    }
                }
            }
            Click(this, e);

        }

        public string Query()
        {
            string Qry = String.Empty;
            int i = 0;
            foreach (var item in list)
            {
                switch (item.filter)
                {
                    case Filter.BeginsWith: Qry += String.Format(item.FieldName.ToString() + ".StartsWith({0}) && ", "@" + i.ToString());
                        break;
                    case Filter.EndsWith: Qry += String.Format(item.FieldName.ToString() + ".EndsWith({0}) && ", "@" + i.ToString());
                        break;
                    case Filter.Contains: Qry += String.Format(item.FieldName.ToString() + ".Contains({0}) && ", "@"+i.ToString());
                        break;
                    case Filter.Default: Qry += String.Format("{0}=={1} && ", item.FieldName, "@" + i.ToString());
                        break;
                    default:
                        break;
                }

                i++;
            }
            Qry = Qry.TrimEnd('&', '&', ' ');
            return Qry;
        }

        public object[] QueryParams()
        {
            ArrayList arrList = new ArrayList();
            foreach (var item in list)
            {
                if (item.dataType == DataType.String) 
                arrList.Add(item.Data);
                else if (item.dataType == DataType.Int32)
                {
                    int intVal = Convert.ToInt32(item.Data);
                    arrList.Add(intVal);
                }
            }
            object[] strArray = arrList.ToArray(typeof(object)) as object[];
            return strArray;
        }

        public string id { get; set; }
        public void AddItem(ContentItem content)
        {
            PlhControl.Controls.Add(new LiteralControl("<td  style=\"text-align:left\">"));
            PlhControl.Controls.Add(new Label() { ID = Guid.NewGuid().ToString(), Text = content.LabelName });
            PlhControl.Controls.Add(new LiteralControl(":</td>"));
            PlhControl.Controls.Add(new LiteralControl("<td  style=\"text-align:left\">"));
            PlhControl.Controls.Add(new MyTextBoxControl() { ID = content.FieldName, dataType = content.dataType, filter = content.filter });
            PlhControl.Controls.Add(new LiteralControl("</td>"));
        }
        private void Add(Content content)
        {
            list.Add(new Content() { ID = content.ID, Data = content.Data, FieldName = content.FieldName, dataType=content.dataType, filter= content.filter });
        }
    }

    internal class Content
    {
        internal string ID { get; set; }
        public string Data { get; set; }
        public string FieldName { get; set; }
        public DataType dataType { get; set; }
        public Filter filter { get; set; }
    }

    public class ContentItem
    {
        private string ID { get; set; }
        public string LabelName { get; set; }
        public string FieldName { get; set; }
        public DataType dataType { get; set; }
        public Filter filter { get; set; }
    }

    public class MyTextBoxControl : TextBox
    {
        public DataType dataType { get; set; }
        public Filter filter { get; set; }
    }

    public enum DataType
    {
        String,Int32
    }

    public enum Filter
    {
        BeginsWith,EndsWith,Contains,Default
    }
}