[C#] كيفية ربط قائمة إلى داتغريدفيو؟


Answers

قد تكون متأخرة قليلا ولكنها مفيدة للمستقبل. إذا كنت لا تحتاج إلى تعيين خصائص مخصصة من الخلية والقلق فقط مع نص الرأس وقيمة الخلية ثم هذا الرمز سوف تساعدك

public class FileName
{        
     [DisplayName("File Name")] 
     public string FileName {get;set;}
     [DisplayName("Value")] 
     public string Value {get;set;}
}

ومن ثم يمكنك ربط قائمة كمصدر بيانات كما

private void BindGrid()
{
    var filelist = GetFileListOnWebServer().ToList();    
    gvFilesOnServer.DataSource = filelist.ToArray();
}

لمزيد من المعلومات يمكنك زيارة هذه الصفحة ربط قائمة الكائنات فئة كمصدر بيانات إلى داتاغريدفيو

ارجوا ان يساعدك هذا.

Question

يبدو لي أن يركض في الدوائر وكان يفعل ذلك في الساعات الماضية.

أريد ملء داتاغريدفيو من مجموعة من السلاسل. لقد قرأت غير ممكن مباشرة، وأنني بحاجة إلى إنشاء نوع مخصص يحمل سلسلة كممتلكات عامة. لذلك جعلت فئة:

public class FileName
    {
        private string _value;

        public FileName(string pValue)
        {
            _value = pValue;
        }

        public string Value
        {
            get 
            {
                return _value;
            }
            set { _value = value; }
        }
    }

هذه هي فئة الحاوية، ولها ببساطة خاصية مع قيمة السلسلة. كل ما أريده الآن هو أن سلسلة تظهر في داتاغريدفيو، عند ربط مصدر البيانات إلى قائمة.

أيضا لدي هذه الطريقة، بينغريد () الذي أريد لملء داتاغريدفيو مع. ها هو:

    private void BindGrid()
    {
        gvFilesOnServer.AutoGenerateColumns = false;

        //create the column programatically
        DataGridViewTextBoxColumn colFileName = new DataGridViewTextBoxColumn();
        DataGridViewCell cell = new DataGridViewTextBoxCell();
        colFileName.CellTemplate = cell; colFileName.Name = "Value";
        colFileName.HeaderText = "File Name";
        colFileName.ValueType = typeof(FileName);

        //add the column to the datagridview
        gvFilesOnServer.Columns.Add(colFileName);

        //fill the string array
        string[] filelist = GetFileListOnWebServer();

        //try making a List<FileName> from that array
        List<FileName> filenamesList = new List<FileName>(filelist.Length);
        for (int i = 0; i < filelist.Length; i++)
        {
            filenamesList.Add(new FileName(filelist[i].ToString()));
        }

        //try making a bindingsource
        BindingSource bs = new BindingSource();
        bs.DataSource = typeof(FileName);
        foreach (FileName fn in filenamesList)
        {
            bs.Add(fn);
        }
        gvFilesOnServer.DataSource = bs;
    }

وأخيرا، فإن المشكلة: مجموعة صفيف يملأ طيب، يتم إنشاء قائمة موافق، ولكن أحصل على عمود فارغ في داتاغريدفيو. حاولت أيضا داتاسورس = قائمة <> مباشرة، بدلا من = بيندينغسورس، لا يزال شيئا.

وأود حقا أن نقدر نصيحة، وهذا كان يقودني مجنون.

شكرا لكم




بدلا من إنشاء فئة حاوية جديدة يمكنك استخدام داتاتابل.

DataTable dt = new DataTable();
dt.Columns.Add("My first column Name");

dt.Rows.Add(new object[] { "Item 1" });
dt.Rows.Add(new object[] { "Item number 2" });
dt.Rows.Add(new object[] { "Item number three" });

myDataGridView.DataSource = dt;

المزيد عن هذه المشكلة يمكنك أن تجد هنا: http://psworld.pl/Programming/BindingListOfString