[c#] كيفية ربط القائمة إلى dataGridView؟


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();
}

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

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

Question

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

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

public class FileName
    {
        private string _value;

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

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

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

أيضا لدي هذه الطريقة ، BindGrid () التي أريد أن تملأ datagridview مع. ها هو:

    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;
    }

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

سأكون ممتنا حقا مشورة ، وهذا كان يقودني للجنون.

شكرا لكم




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

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




Related