как динамически добавлять данные в datatable (Gridview)

1

Я хочу, как добавить данные в datatable и изменить dataformatString столбца "Дата" Изображение 174551

Q1. как изменить формат данных на "dd/MM/yyyy" или использовать ваш метод для показа,
Q2. Я добавляю коды для добавления datakeys: ["RowID"] в событие page_load, но когда я нажимаю кнопку "Изменить", он запрашивает "ссылка на объект не установлен на экземпляр объекта", как можно получить значение datakey/add commandArguement кнопка "изменить"/"удалить"
Q3. когда я нажимаю кнопку "Изменить", как перейти в режим редактирования с обновлением, кнопкой отмены и т.д. для редактирования,

Надеюсь, кто-то может мне помочь, спасибо вам большое!

примечание: кнопка "Редактировать и удалить" добавлена в.aspx, а не динамически "

.cs

protected void Page_Load(object sender, EventArgs e){
if (!IsPostBack) {
        GridView gv = (GridView)Page.FindControl("GridView1");
        gv.DataKeyNames = new string[] { "RowID" };
    }
}

protected void btn_Click(object sender, EventArgs e){
  getDT(date);  //string []date;
}

private DataTable getDT(string[] date){
    DataTable dt = new DataTable();

    dt.Columns.Add("RowID", typeof(Int16));
    dt.Columns.Add("Date", typeof(DateTime));

    for (int i = 0; i < date.Length; i++) {
        dt.Rows.Add(i + 1, date[i]); //date[i] format:yyyy-mm-dd or dd/MM/yyyy
    } 
    return dt;
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {
    if (e.CommandName == "Delete"){
       hf_id.Value = GridView1.DataKeys[0].Value.ToString();
    }
}
Теги:
datatable
gridview

2 ответа

2
Лучший ответ

Загрузите исходный код с указанной ссылки и изучите, это поможет вам. Ваши требования легки, но для этого необходимы базовые знания.

http://www.codeproject.com/Articles/23471/Editable-GridView-in-ASP-NET

  • 0
    я думаю, что это работает, но я не использую tableAdatper, потому что данные не вставляются в базу данных и и dataformatstring не решают его по-прежнему появляются (дд / мм / гггг ЧЧ: мм: сс)
  • 0
    Используйте метод ToShortDateString (), он будет работать для вас.
0

это правильно.. но я хочу быть этим, не используя базу данных.. я сделал все.. теперь я хочу, если я нажму на ячейку, так что данные обновляются в gv, но она не показывает datatable..so я хочу принять кнопка обновления. Если я нажму на это, чтобы данные должны обновляться в таблице данных. Я отправляю код следующим образом...

страница дизайна

Вид сетки

code---

    protected void Page_Load(object sender, EventArgs e){
        if (!this.IsPostBack) {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Name"), new DataColumn("City") });

            dt.Rows.Add(1, "Anamika", "Bangalore");
            dt.Rows.Add(2, "Sunny", "Chennai");
            dt.Rows.Add(3, "Monika", "Bangalore");
            dt.Rows.Add(4, "Jyoti", "Chennai");
            dt.Rows.Add(5, "Radhika", "Jabalpur");
            dt.Rows.Add(6, "Imran", "Jammu");
            dt.Rows.Add(7, "Alok", "Delhi");
            dt.Rows.Add(8, "Amit", "Shamshabad");
            dt.Rows.Add(9, "Neetu", "Bhopal");
            dt.Rows.Add(10, "Jyoti", "Chennai");
            dt.Rows.Add(11, "Radhika", "Vidisha");
            dt.Rows.Add(10, "Pooja", "Pune");

            gridview1.DataSource = dt;
            gridview1.DataBind();
        }
    } 

    protected void gridview1_OnRowDataBound(object sender, GridViewRowEventArgs e) {
        if (e.Row.RowType == DataControlRowType.DataRow) {
            for (int i = 0; i < e.Row.Cells.Count; i++) {                 
                TextBox txt = new TextBox();
                txt.Text = e.Row.Cells[i].Text;                 
                e.Row.Cells[i].Text = "";
                e.Row.Cells[i].Controls.Add(txt);
            }
        }
    }
}
  • 0
    хм .. ваш код делает то, что вы хотите? И что еще более важно: это решает проблему ОП?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню