【问题标题】:Coule not add checkbox in datatable at runtime C# wpf无法在运行时 C# wpf 在数据表中添加复选框
【发布时间】:2009-10-06 14:36:31
【问题描述】:

私有 void SetAppData() { ArrayList alDiscoveredNodes = this.DiscoverNetworNodes();

        //initializeViewDataTable will add colums to ViewDataTable that will be shown on View
        initializeViewDataTable(alDiscoveredNodes);

        Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setPopulateTree)delegate(ArrayList alNodes)
        {
            this.PopulateTreeView(alNodes);
            //this.DrawChart(dtProtocolDetails);                

        }, alDiscoveredNodes);

        //GetNetworkComputers objGetNetworkComputers = new GetNetworkComputers(100);
        DataTable dtProtocolInfo = objCProtocols.ScanForProtocols(alDiscoveredNodes);

        //Calling populateViewDataTable will take dtProtocolInfo by reference and then it will create 
        // another datatable that is for viewsing purpose
        populateViewDataTable(ref dtProtocolInfo);

        Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setData)delegate(DataTable dtProtocolDetails)
        {
            dataGridRunningProtocols.DataContext = dtProtocolDetails;


        }, dtProtocolInfo);


        Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setChartData)delegate(ref DataTable dtProtocolDetails)
        {

            try
            {
                DrawChart(dtProtocolDetails);                   

            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.InnerException.ToString());
            }
        }, dtProtocolInfo);


        Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setChartTitle)delegate(string strTitle)
        {
            mainChart.Title = "Protocol Availability Over Network";


        }, "");
        //pThread.Abort();
       // splash.Close(new TimeSpan(00, 00, 3));

    }

    /// <summary>
    /// It will add Columns to DataTable at run time according to columns defined in
    /// ProtocolConfigration Array
    /// </summary>
    private void initializeViewDataTable(ArrayList alHosts)
    {
        DataColumn dt = null;
        viewDataTable = new DataTable();
        viewDataTable.Columns.Add("Host");
        for (int i = 0; i < ProtocolConfiguration.STR_ARR_PROTOCOLS.Length; i++)
        {
            //viewDataTable.Columns.Add(ProtocolConfiguration.STR_ARR_PROTOCOLS[i][1] + " (" + ProtocolConfiguration.STR_ARR_PROTOCOLS[i][0] + " )", System.Type.GetType("System.Boolean"));                
            dt = new DataColumn(ProtocolConfiguration.STR_ARR_PROTOCOLS[i][1] + " (" + ProtocolConfiguration.STR_ARR_PROTOCOLS[i][0] + " )");
            //dt.DataType = typeof(System.Windows.Controls.CheckBox);
            dt.DataType = typeof(bool);
            viewDataTable.Columns.Add(dt);                
        }

       foreach (string strHost in alHosts)
       {


           //CheckBox cbTemp = new CheckBox();
           //cbTemp.IsChecked = true;
           viewDataTable.Rows.Add(strHost, false);
       }
    }

我想通过数据表在数据网格中添加与某些用户相对的复选框。 就像用户没有在他的计算机上运行 FTP 协议一样,我已经放置了一个未选中的复选框,以表明该用户没有在他的计算机上运行 FTP 协议.. 请帮助

【问题讨论】:

标签: c# wpf datatable checkbox runtime


【解决方案1】:
private void DrawChart() {

ArrayList ar= new ArrayList();
ar.Add("one");
    ar.Add("two");
    ar.Add("three");

        for (int i = 0; i <ar.count ; i++)
        {
                           addRecursiveLedgendAfterInit(ar[i], 50);
        }
    }
private void addRecursiveLedgendAfterInit(string legend,int legendvalue) {

        ICollection<KeyValuePair<String, int>> data = new Dictionary<String, int>();
        data.Add(new KeyValuePair<string, int>(legend, legendvalue));

            ColumnSeries mycolseries = new ColumnSeries
            {
                ItemsSource = data,

                Title = legend,
                IndependentValuePath = "Key",
                DependentValuePath = "Value",

            };

            mainChart.Series.Add(mycolseries);
    }

【讨论】:

    【解决方案2】:

    私有 void SetAppData() { ArrayList alDiscoveredNodes = this.DiscoverNetworNodes();

            //initializeViewDataTable will add colums to ViewDataTable that will be shown on View
            initializeViewDataTable(alDiscoveredNodes);
    
            Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setPopulateTree)delegate(ArrayList alNodes)
            {
                this.PopulateTreeView(alNodes);
                //this.DrawChart(dtProtocolDetails);                
    
            }, alDiscoveredNodes);
    
            //GetNetworkComputers objGetNetworkComputers = new GetNetworkComputers(100);
            DataTable dtProtocolInfo = objCProtocols.ScanForProtocols(alDiscoveredNodes);
    
            //Calling populateViewDataTable will take dtProtocolInfo by reference and then it will create 
            // another datatable that is for viewsing purpose
            populateViewDataTable(ref dtProtocolInfo);
    
            Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setData)delegate(DataTable dtProtocolDetails)
            {
                dataGridRunningProtocols.DataContext = dtProtocolDetails;
    
    
            }, dtProtocolInfo);
    
    
            Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setChartData)delegate(ref DataTable dtProtocolDetails)
            {
    
                try
                {
                    DrawChart(dtProtocolDetails);                   
    
                }
                catch (Exception exc)
                {
    
                    MessageBox.Show(exc.InnerException.ToString());
                }
            }, dtProtocolInfo);
    
    
            Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (setChartTitle)delegate(string strTitle)
            {
                mainChart.Title = "Protocol Availability Over Network";
    
    
            }, "");
            //pThread.Abort();
           // splash.Close(new TimeSpan(00, 00, 3));
    
        }
    
        /// <summary>
        /// It will add Columns to DataTable at run time according to columns defined in
        /// ProtocolConfigration Array
        /// </summary>
        private void initializeViewDataTable(ArrayList alHosts)
        {
            DataColumn dt = null;
            viewDataTable = new DataTable();
            viewDataTable.Columns.Add("Host");
            for (int i = 0; i < ProtocolConfiguration.STR_ARR_PROTOCOLS.Length; i++)
            {
                //viewDataTable.Columns.Add(ProtocolConfiguration.STR_ARR_PROTOCOLS[i][1] + " (" + ProtocolConfiguration.STR_ARR_PROTOCOLS[i][0] + " )", System.Type.GetType("System.Boolean"));                
                dt = new DataColumn(ProtocolConfiguration.STR_ARR_PROTOCOLS[i][1] + " (" + ProtocolConfiguration.STR_ARR_PROTOCOLS[i][0] + " )");
                //dt.DataType = typeof(System.Windows.Controls.CheckBox);
                dt.DataType = typeof(bool);
                viewDataTable.Columns.Add(dt);                
            }
    
           foreach (string strHost in alHosts)
           {
    
    
               //CheckBox cbTemp = new CheckBox();
               //cbTemp.IsChecked = true;
               viewDataTable.Rows.Add(strHost, false);
           }
        }
    

    我想通过数据表在数据网格中添加与某些用户相对的复选框。 就像用户没有在他的计算机上运行 FTP 协议一样,我已经放置了一个未选中的复选框,以表明该用户没有在他的计算机上运行 FTP 协议.. 请帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 2022-06-16
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多