как прочитать все строки в определенном столбце и изменить перед привязкой в виде таблицы asp.net

#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
    }
}