C#DataGridView - 特定列的自定义格式

时间:2017-07-25 00:47:54

标签: c# mysql database winforms datagridview

我目前正在从MySQL数据库中检索数据并将其显示在this.importForm.reset({ area: [], silo: [], department: [], location: [], segment: [], role: [] }); 中。其中一列为DataGridViewgender(int)表示1表示。我希望DataGridView显示男性女性,而不仅仅是21

在MySQL查询中预先格式化数据是一种好习惯吗?我正在考虑在2装饰检索到的数据,而不是更改检索到的数据。但是让我听听你的想法。

2 个答案:

答案 0 :(得分:1)

在下面的示例中,我动态创建了一个列并添加到我的数据网格中。现在,一旦数据表绑定到Grid,它将选择正确的值。

         try
            {
                dataGridView1.AutoGenerateColumns = false;

                //source for combo box
                var items = new Dictionary<string, int>();
                items.Add("Male", 1);
                items.Add("FeMale", 2);

                //new combobox column for the GRID
                DataGridViewComboBoxColumn gender = new DataGridViewComboBoxColumn();
                gender.DisplayMember = "Key";
                gender.ValueMember = "Value";
                gender.DataSource = new BindingSource(items, null);
                gender.HeaderText = "Gender";
                gender.DataPropertyName = "Gender";
                dataGridView1.Columns.Add(gender);

                //Data for the GRID
                DataTable dt = new DataTable();
                dt.Columns.Add("Gender", typeof(int));
                dt.Rows.Add(new object[] { 1 });
                dt.Rows.Add(new object[] { 2 });
                dt.Rows.Add(new object[] { 2 });
                dt.Rows.Add(new object[] { 2 });
                dt.Rows.Add(new object[] { 1 });
                dataGridView1.DataSource = dt;
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }

这给出了以下输出

Output

答案 1 :(得分:0)

这是视觉基本代码。不确定预先格式化数据是否是好的做法..

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As 
System.Web.UI.WebControls.GridViewRowEventArgs) Handles 
GridView1.RowDataBound

If e.Row.RowType = DataControlRowType.DataRow Then
Dim gender As String = 
Convert.ToString(e.Row.Cells(columnnumber).Text).Trim()
If gender= "1" Then
e.Row.Cells(columnnumber).Text = "Male"
Else if gender="2" Then
e.Row.Cells(columnnumber).Text="Female"   `

End If
End Sub

的字段类型:     asp:BoundField DataField =&#34; Zone&#34;

翻译使用:https://www.carlosag.net/tools/codetranslator/

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) {
    if ((e.Row.RowType == DataControlRowType.DataRow)) {
        string gender = Convert.ToString(e.Row.Cells[columnnumber].Text).Trim();
        if ((gender == "1")) {
            e.Row.Cells[columnnumber].Text = "Male";
        }
        else if ((gender == "2")) {
            e.Row.Cells[columnnumber].Text = "Female";
        }

    }

}

希望这有帮助