توي web application بايد طرز فکرت رو عوض کني...
ديگه طرف حساب يک نفر نيست و نحوه استفاده از اشياء کمي تفاوت مي کنه.
مشکل شما در اين مسئله: مثلاً اينجا شما در اينجا با هر بار کليک روي دکمه داريد يک ديتا تيبل مي سازيد ، براي همين هر دفعه خالي ميشه و اطلاعات آخري فقط مي مونه توي آن.
راه حل : datatable رو قبل از methodها و به عنوان static تعريف کنيد. البته اين راه حل فقط براي حل مشکل اضافه کردن اشياء جديد به آن datatabe است. در اصل شما بايد هر بار database را update کنيد . (البته بسته به هدفتان)
قسمت ساختن column ها را هم به زمان page load ببريد تا هر بار زدن کليد column تکراري نسازد و error ندهد. و در حالت page.ispostback! قرار دهيد تا فقط اولين بار ساخته شوند.
مشکل را به صورت زير برايت حل کردم و نمونه قرارداده شده را نيز تست کردم و جواب مي دهد.
سوالي بود در خدمتم.
موفق باشيد.
public partial class _Default : System.Web.UI.Page
{
private static DataTable table = new DataTable();
DataColumn column;
DataRow row;
DataView view;
//Create new DataColumn, set DataType, ColumnName and add to DataTable.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "id";
table.Columns.Add(column);
// Create second column.
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "item";
table.Columns.Add(column);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
// Declare DataColumn and DataRow variables.
//
row = table.NewRow();
row["id"] = TextBox1.Text;
row["item"] = TextBox2.Text;
table.Rows.Add(row);
//
view = new DataView(table);
GridView1.DataSource = view;
GridView1.DataBind();
}
}