【问题标题】:how to add data into datatable(Gridview) dynamically如何动态地将数据添加到数据表(Gridview)中
【发布时间】:2014-05-20 06:39:51
【问题描述】:

我想知道如何将数据添加到数据表中并更改“日期”列的 dataformatString

第一季度。如何将数据格式更改为“dd/MM/yyyy”或使用您的方法显示
Q2。我在 page_load 事件中添加了 add datakeys:["RowID"] 的代码,但是当我单击“编辑”按钮时,它提示“对象引用未设置为对象的实例”,如何获取 datakey 值/添加 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();
    }
}

【问题讨论】:

  • A1.您可以将 DataFormatString 属性设置为 gridview 的 dd/MM/yyyy。或者,您也可以使用 DateTime.ToString(string) 方法在代码后面格式化您的日期值。
  • 我已将日期格式更改为 dd/MM/yyyy to date[i],它不起作用
  • 试试这个:dt.Rows.Add(i + 1, date[i].ToString("dd/MM/yyyy"));
  • 如果我被 dt.Rows.Add(i + 1, date[i].ToString("dd/MM/yyyy")); ,错误消息显示“'string.ToString(System.IFormatProvider)' has some invalid arguments ”,我在代码中使用两种日期格式,仍然得到相同的响应

标签: c# asp.net gridview datatable


【解决方案1】:

从给定的链接下载源代码并学习它会对您有所帮助。您的要求很简单,但需要具备基本知识。

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

【讨论】:

  • 我认为它有效,但我不使用 tableAdatper,因为数据没有插入数据库,并且 dataformatstring 没有解决它仍然出现(dd/MM/yyyy HH:mm:ss)
  • 使用 ToShortDateString() 方法它会为你工作。
【解决方案2】:

这是正确的..但我想在不使用数据库的情况下做到这一点..我做了一切..现在我想要 如果我单击单元格,因此数据正在 gv 中更新,但它没有显示数据表..所以我想点击刷新按钮.. 如果我点击这个,那么数据应该在数据表上更新.. 我正在发送这样的代码...

设计页面

网格视图

代码---

    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);
            }
        }
    }
}

【讨论】:

  • hmm .. 你的代码做你想做的事吗?更重要的是:它是否解决了 OP 的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2014-09-20
  • 1970-01-01
相关资源
最近更新 更多