无法在运行时C#wpf中的datatable中添加复选框

时间:2009-10-06 14:36:32

标签: c# wpf datatable checkbox runtime

private 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协议..请帮助

2 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分:0)

private 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协议..请帮助