PDA

View Full Version : ساختن جدول موقت



paghalat
چهارشنبه 06 شهریور 1398, 19:53 عصر
150673
چندتا ورودی داریم وقتی روی دکمه ثبت کلیک شد اطلاعات درون تیبل نشون بده بدون اینکه در دیتابیس ذخیره بشه یه جورایی میخوام اطلاعات به صورت موقت در جدول ذخیره بشه
لطفا راهنمایی کنید

paghalat
پنج شنبه 07 شهریور 1398, 12:14 عصر
با استفاده تکه کد زیر تونستم جدولم بسازم و داده بهش اضاف کنم اما تنها مشکلی که داره فقط یک سطر ایجاد میکنه مثلا اگه بخوای دوسطر ایجاد کنی وقتی سطر اول ایجاد شد و یخوای سطر 2 ایجاد کنی میاد جایگزین سطر قبلی میکنه

DataTable dt = new DataTable();
DataRow dr = null;

dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
dt.Columns.Add(new DataColumn("Column1", typeof(string)));//for TextBox value
dt.Columns.Add(new DataColumn("Column2", typeof(string)));//for TextBox value

dr = dt.NewRow();
dr["RowNumber"] =Convert.ToInt32(TextBox1.Text);
dr["Column1"] = TextBox1.Text;
dr["Column2"] = TextBox2.Text;
dt.Rows.Add(dr);
//Store the DataTable in ViewState for future reference
ViewState["CurrentTable"] = dt;
//Bind the Gridview
Gridview1.DataSource = dt;

Gridview1.DataBind();


150675

علیرضا5
شنبه 09 شهریور 1398, 07:25 صبح
جسارتا اگه میخوای اطلاعات موقتا نمایش داده بشه چرا از گرید ویو استفاده میکنی که صفحه هم سنگین تر میشه

خوب یه لیبل ساده بذار و تمام
اینکه نتیجشم بهتره و راحت ترم هست

paghalat
شنبه 09 شهریور 1398, 09:35 صبح
150684
طبق این تصویر میخوام کاربر هرچی داخل تکس باکس ها وارد کرد برام داخل جدول نشون بده ممکن هست 1 داده وارد کند مکنن هست 10 تا داده وارد کند

علیرضا5
شنبه 09 شهریور 1398, 10:25 صبح
دوست گرامی من نمیدونم چرا گریدویو اینطوریه و چطوری درست میشه
شاید توی update panel بذاریش درست بشه منظورم اینه که بخاطر رفرش شدن صفحه این اتفاق داره میافته

بهرحال با یه لیبل هم کارت راه میافته همون شکل جدول هم درمیاد دیگه چه نیازی هست به گرید ویو

تو لیبل با یه <br/> میری به خط بعدی
برای هر آیتمی هم یه with تعریف کن که اندازش درست دربیاد

paghalat
شنبه 09 شهریور 1398, 16:46 عصر
میشه نمونه کدش که با لیبل میگی بزاری

mazoolagh
یک شنبه 10 شهریور 1398, 08:54 صبح
DataTable dt = new DataTable();
DataRow dr = null;

dt.Columns.Add(new DataColumn("RowNumber", typeof(string)));
dt.Columns.Add(new DataColumn("Column1", typeof(string)));//for TextBox value
dt.Columns.Add(new DataColumn("Column2", typeof(string)));//for TextBox value

dr = dt.NewRow();
dr["RowNumber"] =Convert.ToInt32(TextBox1.Text);
dr["Column1"] = TextBox1.Text;
dr["Column2"] = TextBox2.Text;
dt.Rows.Add(dr);
//Store the DataTable in ViewState for future reference
ViewState["CurrentTable"] = dt;
//Bind the Gridview
Gridview1.DataSource = dt;

Gridview1.DataBind();


چند مورد هست که باید دقت کنین:

1- در این کد که گذاشتین قبل از افزودن سطر جدید، هر بار datatable از نو ساخته میشه، بنابر این هر روشی که بکار ببرین همیشه نتیجه همین هست که میبینین!
باید کد ساخت datatable و کد اضافه کردن سطر جدید رو از هم جدا کنین.

2- برای این که اطلاعات datatable شما بین postback ها از بین نره باید اون رو در یک session بریزین.
یک تابع مینویسین که مقدار این session رو بررسی میکنه، اگر خالی هست باید datatable ساخته بشه وگرنه از session مربوطه مقدار میگیره

3- در کد button click از این تابع برای خوندن datatable و اضافه کردن سطر جدید بهش استفاده میکنین و البته حواستون باشه که بعد از اینکار باید دوباره session اون رو آپدیت کنین.

mazoolagh
یک شنبه 10 شهریور 1398, 08:56 صبح
function GetDataTable() as datatable
if isnothing(session("tblx")) then
dim dt as new datatable
dt.Columns.Add(new DataColumn("RowNumber", typeof(string)))
dt.Columns.Add(new DataColumn("Column1", typeof(string)))
dt.Columns.Add(new DataColumn("Column2", typeof(string)))
session("tblx")=dt
endif
return session("tblx")
end function

mazoolagh
یک شنبه 10 شهریور 1398, 09:01 صبح
sub button_click()
dim dt as datatable=GetDataTable()
dim dr as datarow=dt.newrow
dr("RowNumber")=Convert.ToInt32(TextBox1.Text)
dr("Column1")=TextBox1.Text
dr("Column2")=TextBox2.Text
dt.rows.add(dr)
session("tblx")=dt
GridView1.DataSource=dt
GridView1.DataBind()
end sub