#c# #asp.net #gridview
#c# #asp.net #gridview
Вопрос:
У меня есть таблица SQL, где она содержит в одном столбце все шестнадцатиричные значения. При извлечении данных из таблицы в виде таблицы.Мне нужно изменить все его значение в определенном столбце с помощью, а затем привязать.
foreach (DataRow dr in ds.Tables[0].Rows)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i )
{
object o = dr["ColumnName"];
if (o != DBNull.Value) // Check for null
{
if (ds.Tables[0].Rows[i]["ColumnName"].ToString() != null)
{
ds.Tables[0].Rows[i]["ColumnName"] = value.ToString();
}
else
{ }
}
}
}
ds.Tables[0].AcceptChanges();
grid.DataSource = ds;
grid.DataBind();
Я пытаюсь перебрать только один конкретный столбец и изменить все значения в нем. Но это терпит неудачу. пожалуйста, помогите мне
Комментарии:
1. Это также работает так, как ожидалось.
Ответ №1:
Поскольку ds.Tables[0]
содержит DataTable
объект, вы можете использовать DataRow.Field<T>()
метод расширения, чтобы найти значения из указанного имени столбца, заменить значения на SetField()
, а затем повторно привязать изменения к источнику данных сетки:
foreach (DataRow dr in ds.Tables[0].Rows)
{
string oldValue = dr.Field<string>("ColumnName");
// check if the column has value
if (!string.IsNullOrEmpty(oldValue))
{
dr.SetField("ColumnName", value.ToString());
}
else
{
// do something else
}
}
ds.Tables[0].AcceptChanges();
// rebind the data source here
Обратите внимание, что это DataRow.Field<T>
приводит значение к типу, указанному в T
параметре type, следовательно, в следующем if-условии используется проверка на соответствие null
или пустая строка вместо DBNull.Value
.
Ответ №2:
во-первых, bind
ваш grid view
и добавьте OnRowDataBound
подобный
<asp:GridView ID="GridView1" runat="server" OnRowDataBound = "OnRowDataBound">
RowDataBound
событие — это triggered
for each GridView Row
когда GridView
строка привязана к данным.
затем в вашем коде события on OnRowDataBound
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
column1 = e.Row.Cells[1].Text;
//here you can give the column no that you want get like e.Row.Cells[1]
e.Row.Cells[1].Text="test";
//you can set what you want like this
}
}