PDA

View Full Version : سوال: ایجاد سطر در یک جدول به کمک کد نویسی



khparhami
دوشنبه 08 تیر 1388, 14:54 عصر
با سلام
من برای ایجاد یک فاکتور نیاز به این دارم که قبل از ورود کامل اطلاعات ، تمام سطر ها رو به یک جدول در زمان اجرا اضافه کنم. هر بار که کاربر بر روی یک باتن کلیک می کند یک سطر شامل اطلاعات درون هر cell به جدول اضافه شود.
در حال حاضر هر بار که یک سطر را اضافه می کنم ، سطر قبلی پاک می شود ، به دلیل اینکه صفحه مجددآ بار می شود و view state را تغییر می دهد.
لطفاً اگر راه حلی دارید ارائه نماید.

با تشکر فراوان

milade
دوشنبه 08 تیر 1388, 15:27 عصر
سلام

یه دیتاست بسازید ، سطر رو بهش اضافه کنید ، دیتاست رو اپدیت کنید .

موفق باشید

khparhami
دوشنبه 08 تیر 1388, 16:01 عصر
با تشکر ،
من همیشه از دیتا ست با دیتا بیس استفاده کردم ، میشه لطفاً بیشتر توضیح بدین که چطور میشه یک دیتا تیبل رو با داده ها در زمان اجرا پر کرد؟
من به این دلیل میخوام از جدول (Table) استفاده کنم که نمیخوام دیتا بیس دیگه ای بسازم.

با تشکر

milade
دوشنبه 08 تیر 1388, 16:11 عصر
سلام

خوب دیتاست و دیتاتیبل نداره که !

ببین دیتاست مجموعه چند تا دیتاتیبل هست .

حالا اینم دیتا تیبل :

'Create Sipmle DataTable ...
Dim cnt As Integer
Dim dt As New Data.DataTable
dt.Columns.Add("c1")
dt.Columns.Add("c2")
Dim r As Data.DataRow = dt.NewRow
'Adding Data ...
r.Item(0) = "http://google.com"
r.Item(1) = "Google"
dt.Rows.Add(r)
فکر کنم واضح باشه .

در اخر همین تیبل را با اداپتور اپدیت کن به بانک یا اینسرت یا هر چی !

موفق باشید

khparhami
سه شنبه 09 تیر 1388, 08:27 صبح
آقا ممنون ، DataSet و DataTable و بقیه مخلفاتش رو درست کردم و یک Gridview گذاشتم و bind کردمش به این DataSet ولی یه مشکل وجود داره اونم اینه که من هر بار که باتن کلیک میشه میخوام که یک سطر به grid اضافه بشه ، ولی نمیشه ، توی متد هر بار یک سطر به DataTable اضافه میکنم و DataSet رو هم Bind میکنم به Grid.

چه کنم؟

milade
سه شنبه 09 تیر 1388, 09:20 صبح
سلام
بعضی مواقع مشکل PostBack وجود داره . اون رو چک کنید .
اگه حل نشد تکه ای از کد رو بگزارید .

موفق باشید

khparhami
سه شنبه 09 تیر 1388, 09:53 صبح
دقیقاً مشکل همین PostBack هستش ، من DataSet و DataTable رو توی
if(!Page.IsPostBack) قرار دادم . یعنی دفعه اول که صفحع لود میشه نمونه DataSet و DataTable ساخته میشه ولی مسئله اینه که ساخت فاکتور من با یک PostBack شروع میشه. من نمیدونم که نمونه DataSet و DataTable رو کجا بگیرم که هر بار یک نمونه خالی ایجاد نشه.
وقتی هم مثل کد زیر نمونه رو زمانی ایجاد می کنم که پست بک نباشه ، چون کار با پست بک شروع میشه اصلا نمونه ایجاد نمیشه:



DataSet DS ;
DataTable DT;

protected void Page_Load(object sender, EventArgs e)
{
lblDate .Text = GetPersianDate();
PanelInvoice.Visible = false;

if (!Page.IsPostBack)
{
DS = new DataSet();
DT = new DataTable();
}

}


public void CreateInvoiceTable()
{
//lblCounter.Text = (Convert.ToInt16(lblCounter.Text) + 1).ToString ();
counter++;
string[] arRow = { counter.ToString(), DCTR.SALESMAN_CODE, DCTR.ITEM_CODE, txtItemCode.Text, DCTR.QUANTITY.ToString(), DCTR.EQUANTITY.ToString(), DCTR.PRICE.ToString(), (DCTR.PRICE * DCTR.QUANTITY).ToString() };

DataRow DR = DT.NewRow();
DT.Columns.Add("©§یه");
DT.Columns.Add("ک§ ه©ي¬ë§ى");
DT.Columns.Add("ک§ کںéں");
DT.Columns.Add("¬©¥ کںéں");
DT.Columns.Add("¢م§ں§ کé");
DT.Columns.Add("¢م§ں§ ¤ھک");
DT.Columns.Add("çیê¢ يں¥§");
DT.Columns.Add("çیê¢ کé");
DR.ItemArray = arRow;
DT.Rows.Add(DR);
DS.Tables.Add(DT);
GVInvoice.DataSource = DS;
GVInvoice.DataBind();

}

milade
سه شنبه 09 تیر 1388, 10:55 صبح
سلام دوست عزیز .
دو راه هست :
1.دیتاست رو توی یه کش یا سشن قرار بدی .
2.همین که Row رو Add کردی به بانک Update کنی.

موفق باشید

iman_22a
سه شنبه 09 تیر 1388, 10:55 صبح
اگر توی تعریف دیتاست از Public Shared استفاده کنید ، مشکل خالی شدن دیتاست از بین میره البته این یه پیشنهاده :چشمک:

milade
سه شنبه 09 تیر 1388, 11:03 صبح
اگر توی تعریف دیتاست از Public Shared استفاده کنید ، مشکل خالی شدن دیتاست از بین میره البته این یه پیشنهاده
هر کاری که کنیم توی یه پست بک تماماً نال میشن ( تمام متغیرها و رویدادها ... ) مگر اینکه نگهداری بشن ...

iman_22a
سه شنبه 09 تیر 1388, 12:37 عصر
هر کاری که کنیم توی یه پست بک تماماً نال میشن ( تمام متغیرها و رویدادها ... ) مگر اینکه نگهداری بشن ...

میلاد جان . من این مشکل رو داشتم که وقتی صفحه پستبک میشد همه چیز نال میشد البته یادم رفت بگم که دیتاست رو با کد ایجاد نکرده ام . از شی دیتاست استفاده کردم و نمونه سازی کردم بعدا که این مشکل ایجاد شد با Public Shared و اختصاصی مقداری از Ram به دیتاست یا Table Adapter اون ، مشکل برطرف شد.

حرف شما درسته اینجا باید از Session یا کش استفاده بشه :قلب:

khparhami
چهارشنبه 10 تیر 1388, 07:38 صبح
نه با Public shared مسئله حل نمیشه ، باید از ViewState استفاده بشه .
ممنون از کمکتون ، حل شد.