DataSet - Применить условный формат всего столбца? - PullRequest
0 голосов
/ 17 мая 2011

Есть ли способ применить форматирующий формат ко всему столбцу из набора данных?Например, вот результат из набора данных:

ID FullName Number

1 Testing 0

2 More Test [null]

3 Last Test 1

Я бы хотел иметь возможность отформатировать столбец Number, если это 0, тогда я бы отобразил пустую строку, если это null, тогда я бы отобразил NR, а если это 1, то ябудет отображаться T.

Спасибо.

Ответы [ 3 ]

1 голос
/ 17 мая 2011

Все зависит от того, как вы используете DataSet / DataTable - это DataSource для GridView или FormView, и вы просто хотите предоставить разные выходные данные для привязки данных? Или вы хотите войти и изменить данные, представленные в наборе данных?

Если это первое, вот базовый пример GridView о том, как выполнить функцию во время привязки данных для предоставления другого значения (см. Заполнение GridViewColumn кодом c # для примера VB.NET):

<asp:GridView ID="gvExample" runat="server" DataSourceID="dsExample">
    <Columns>
        <asp:TemplateField HeaderText="Header Text">
            <ItemTemplate>
                <asp:Literal ID="litFunctionResult" runat="server" 
                    Text='<%# DoMyFunction(Eval("DataSourceField1") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

И в своем коде добавить что-то вроде этого:

Protected String DoMyFunction(Object field)
{
    int retValue;
    if (field == System.DBNull.Value)
        retValue = "NR";
    else if (Convert.ToInt32(field) == 0)
        retValue = "";
    else if (Convert.ToInt32(field) == 1)
        retValue = "T";
    else
        retValue = "uhoh?";

    return retValue;
}

РЕДАКТИРОВАТЬ: С введением того факта, что вы экспортируете это в Excel ... это, вероятно, не особенно удобно. Кроме того, вы не указали ASP.NET, так что ... если по какой-то причине вы не хотите создавать и привязывать данные GridView, это бесполезно. Я оставлю ответ здесь на случай, если кто-нибудь случится.

0 голосов
/ 18 мая 2011

Наборы данных не имеют форматов. Они просто содержат данные. Если вам нужно «отформатировать» его, значит, вы используете не тот инструмент.

0 голосов
/ 18 мая 2011

Я перебрал DataSet, чтобы он заработал.Не уверен, что это лучший способ:

for(int i = 0; i< ds.Tables[0].Rows.Count; i++)
{
    for(int j = 0; j < ds.Tables[0].Columns.Count; j++)
    {
        var columnName = ds.Tables[0].Columns[j].ColumnName;
        if(columnName == "Number")
        {
            ds.Tables[0].Rows[i][columnName] = SpecialFormat(columnName, ds.Tables[0].Rows[i]));
        }
    }
}

private string SpecialFormat(string column, DataRow dataRow)
{
    string value = dataRow[column].ToString();
    if (!string.IsNullOrEmpty(value))
    {
        if (value == "0")
            return "";
        if (value == "1")
            return "T";
    }
    return "";
}
...