Привет у меня есть набор данных, имеющий одну таблицу, имеют данные заливки на 5 столбцов из базы данных.
Когда я работаю, таблица данных приложения содержит больше чем 50 строк, я хотел бы обновить значение таблицы данных после получения данных из databse. Мои требования
Я использую этот набор данных в кристаллическом отчете asp.net с помощью подхода НАЖАТИЯ.
Здесь я думаю, что применяю один цикл строк, существующих в таблице данных, и обновляю ячейки соответственно. Но я ищу какой-либо прямой метод обновления?
Помогите мне, как я могу решить выше 2 проблем?
Одна часть вашего вопроса может быть выполнена с SQL в базе данных, где вы просто делаете оператор обновления и замените эти пустые ячейки «-». Другая часть вашего вопроса не стала очень понятной для меня. Если вы спрашиваете, как убедиться, что вы можете редактировать строки в DataColumn, используя DataGrid, вы можете просто прочитать этой статьи , и вы сможете сделать сетку в редактируемый режим.
Просмотр строк, обновление значений по ходу - это определенно решение, и довольно простое:
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}") %>