将数据表列分配给图表列颜色

时间:2018-07-12 21:02:30

标签: sql asp.net stored-procedures charts datatable

我正在使用 ASP.NET 图表显示 SQL 存储过程的结果,并且我将最后存储的proc列用作colorID来显示我使用哪种颜色希望图表中的每一列都是。存储的过程有6列和6行,如下所示(我在下面使用示例数字)。 colorID范围为0,1,2。

问题在于,图表列的颜色不会动态更改为存储的proc中显示的记录。下面的代码只是获取最后一个记录import React, { Component } from 'react'; import { withStyles } from '@material-ui/core/styles'; import styles from "./styles"; import MenuItem from '@material-ui/core/MenuItem'; import Select from 'react-select'; import 'react-select/dist/react-select.css'; import Typography from '@material-ui/core/Typography'; import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown'; import ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp'; import Input from '@material-ui/core/Input'; import LinearProgress from '@material-ui/core/LinearProgress'; import classNames from 'classnames'; class Option extends React.Component { handleClick = event => { this.props.onSelect(this.props.option, event); }; render() { const { children, isFocused, isSelected, onFocus } = this.props; return ( <MenuItem onFocus={onFocus} selected={isFocused} disabled={isSelected} onClick={this.handleClick} component="div" style={{ fontWeight: isSelected ? 500 : 400, }} > {children} {children === 'LOADING...' && <LinearProgress style={{ position: 'absolute',width: '100%',bottom: '0',left: '0',height: '2px', }} /> } </MenuItem> ); } } class SelectWrapped extends Component { render() { const { classes, ...other } = this.props; return ( <Select optionComponent={Option} noResultsText={<Typography>{'No results found'}</Typography>} clearRenderer={() => {}} arrowRenderer={arrowProps => { return arrowProps.isOpen ? <ArrowDropUpIcon /> : <ArrowDropDownIcon />; }} valueComponent={valueProps => { const { children } = valueProps; console.log(children) return <div className="Select-value">{children}</div>; }} {...other} /> ); } } class SelectCreatable extends Component { render() { const { classes, ...other } = this.props; console.log(this.props) return ( <Select.Creatable optionComponent={Option} noResultsText={<Typography>{'No results found'}</Typography>} clearRenderer={() => {}} arrowRenderer={arrowProps => { return arrowProps.isOpen ? <ArrowDropUpIcon /> : <ArrowDropDownIcon />; }} valueComponent={valueProps => { const { children } = valueProps; return <div className="Select-value">{children}</div>; }} {...other} /> ); } } class AutoCompleteComponent extends Component { state = { value: null, }; handleChange = value => { this.setState({ value: value }) const foundSuggestion = this.props.suggestions.find((s) => s.id === value); if (this.props.creatable) { this.props.onChange(foundSuggestion || { [this.props.labelPropName]: value }) } else { this.props.onChange(foundSuggestion) } } onChange = value => { this.props.onChange(this.props.suggestions.find((s) => s.id === value)) }; render() { const { classes, labelPropName, creatable } = this.props; const suggestions = this.props.suggestions.map(suggestion => ({ value: suggestion.id, label: this.props.labelFunction(suggestion) })) return ( <div className={classNames(classes.root,this.props.className)}> <Input fullWidth inputComponent={creatable ? SelectCreatable : SelectWrapped} value={this.state.value} onChange={(value) => this.props.showValue ? this.handleChange(value) : this.onChange(value)} placeholder={this.props.placeholder} classes={{ input: classes.input, ...this.props.InputClasses }} inputProps={{ classes, simpleValue: true, options: suggestions }} /> </div> ); } } export default withStyles(styles, { withTheme: true })(AutoCompleteComponent); 的数字,并将其用于每种条形颜色。

我在网上搜索了许多示例,但没有运气,这是我的第一篇帖子,因此请原谅任何上传错误。任何帮助都将不胜感激。谢谢。

ColorID

这是下面的代码:

col1 | col2 | col3 | col4 | col5 | ColorID
-----+------+------+------+------+--------
     |      |      |      |      |    0
     |      |      |      |      |    1
     |      |      |      |      |    2
     |      |      |      |      |    0
     |      |      |      |      |    0
     |      |      |      |      |    0

1 个答案:

答案 0 :(得分:0)

我可以使用下面显示的另一种方法来解决这个问题。

            Dim array As String()
            Dim labelsList As List(Of String) = New List(Of String)
            For Each row As DataRow In ds.Rows
                labelsList.Add(row.Item("ColorID"))
            Next

            aar = labelsList.ToArray()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            If aar(0) = "0" Then
                Chart1.Series(0).Points(0).Color = Drawing.Color.Red
            ElseIf aar(0) = "1" Then
                Chart1.Series(0).Points(0).Color = Drawing.Color.Yellow
            ElseIf aar(0) = "2" Then
                Chart1.Series(0).Points(0).Color = Drawing.Color.Green
            End If
相关问题