Как значение столбца набора данных редактирования в asp.net

Привет у меня есть набор данных, имеющий одну таблицу, имеют данные заливки на 5 столбцов из базы данных.

Когда я работаю, таблица данных приложения содержит больше чем 50 строк, я хотел бы обновить значение таблицы данных после получения данных из databse. Мои требования

  1. Эта таблица имеет немного ячеек, имеющих Нулевое значение, я хотел бы заменить пустой указатель "-"?
  2. Один столбец является типом данных System.datetime, где я хотел бы удалить время. Я только хотел бы иметь дату?

Я использую этот набор данных в кристаллическом отчете asp.net с помощью подхода НАЖАТИЯ.

Здесь я думаю, что применяю один цикл строк, существующих в таблице данных, и обновляю ячейки соответственно. Но я ищу какой-либо прямой метод обновления?

Помогите мне, как я могу решить выше 2 проблем?

5
задан Hemant Kothiyal 2 February 2010 в 11:32
поделиться

2 ответа

Одна часть вашего вопроса может быть выполнена с SQL в базе данных, где вы просто делаете оператор обновления и замените эти пустые ячейки «-». Другая часть вашего вопроса не стала очень понятной для меня. Если вы спрашиваете, как убедиться, что вы можете редактировать строки в DataColumn, используя DataGrid, вы можете просто прочитать этой статьи , и вы сможете сделать сетку в редактируемый режим.

0
ответ дан 15 December 2019 в 01:01
поделиться

Просмотр строк, обновление значений по ходу - это определенно решение, и довольно простое:

foreach (DataRow row in table.Rows)
{
    if (row.IsNull("foo")) row["foo"] = "-";
    if (row.IsNull("bar")) row["bar"] = "-";
    row["date"] = ((DateTime)row["date"]).Date;
}

Альтернативно можно создать новые столбцы в таблице, используя выражения для автогенерации содержимого:

table.Columns.Add("foo_dash", typeof(string), "IsNull(foo, '-')");
table.Columns.Add("bar_dash", typeof(string), "IsNull(bar, '-')");

(Я не знаю функций даты в ADO. NET, так что вам придется самому разобраться с последним.)

Вы пометили свой пост ASP.NET, так что я полагаю, разумно предположить, что вы собираетесь привязать ваш DataTable к некоторому управлению мульти-записывающими данными (GridView, Repeater и т.д.). Если это так, то, возможно, лучше проводить преобразования при привязке к базе данных:

protected void theGrid_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    var data = e.DataItem as DataRowView;
    if (data != null)
    {
        if (data.Row.IsNull("foo")) e.Row.Cells[0] = "-";
        if (data.Row.IsNull("bar")) e.Row.Cells[0] = "-";
    }
}

Хотя это, кажется, требует немного больше кода, но также дает большую гибкость. Пример:

if (data.Row.IsNull("importantField")) e.Row.CssClass = "error";

В GridView дата может быть отформатирована с помощью DataFormatString в декларации столбца:

<asp:BoundField DataField="data" DataFormatString="{0:d}" />

Аналогично при поиске базы данных с помощью Repeater:

<%# Eval("date", "{0:d}") %>
4
ответ дан 15 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: