PDA

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



slashslash2009
پنج شنبه 14 آبان 1388, 14:22 عصر
سلام تابه حال 2 تا سوال پرسیدم کسی جواب نداده.
تو صفحه وبم 3تا تکست باکس دارم و یک table و یک کلید می خوام وقتی که روی کلید زدم هرچی تو تکست باکسام هست بره وارد جدول بشه


Table1.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox3.Text);


یه خطا میده . تو C#‎ از datagridview استفاده می کردم خیلی راحت بود اینجا نمیدونم باید چی کار کرد خواهش میکنم کمکم کنید.

saied_genius
پنج شنبه 14 آبان 1388, 15:50 عصر
سلام

از اول به خودم مي گفتي ، بهت مي گفتم چي کار کني ؛-)


DataTable dt = new DataTable();
DataRow dr = dt.NewRow();
dr["field1"] = TextBox1.text;
dr["field1"] = TextBox2.text;
dr["field1"] = TextBox3.text;
dt.Rows.Add(dr);سوالي بود در خدمتم.
موفق باشيد.

slashslash2009
پنج شنبه 14 آبان 1388, 17:51 عصر
آقا دستت درد نکنه خودم هر کاری کرده بودم آخرش شده بدد این

TableRow r = newTableRow();
TableCell c = newTableCell();
c.Text = (TextBox1.Text);

r.Cells.Add(c);
Table1.Rows.Add(r);

saied_genius
پنج شنبه 14 آبان 1388, 17:53 عصر
خواهش مي کنم.

سوالي داشتيد در خدمتم.

موفق باشيد.

slashslash2009
پنج شنبه 14 آبان 1388, 18:18 عصر
آقا اشتباه شد خیلی هم .
منظورم جدول بانک اطلاعاتی نبود منظورم همون دیتاگرید ویو فقط بود البته فکر کنم با کنترل table هم بشه این کارو کرد من میخوام اول چندتا رکورد رو یک دفعه ای با هم insert کنم مثل یک فاکتور میمون در C#‎ این کارو با دیتاگرید ویو انجام میدادم یعنی رکوردامو وارد دیتاگرید ویو میکردم بعدش همه رو insert میکردم با یه حلقه for . ولی تو Asp نمیشه این کدو نوشت گزینه add نمیاد در C#‎ اینجوری بود :

dataridview.rows.add(textbox1.text,textbox2.text)
کمک

saied_genius
پنج شنبه 14 آبان 1388, 19:11 عصر
شما يا بايد datagrid را به يک datatable و يا يک dataview وصل کنيد.

در هر دو صورت شما datarow يا dataviewrow را ميتوانيد اضافه کنيد و سپس datagrid را دوباره bind کنيد.

موفق باشيد.

slashslash2009
پنج شنبه 14 آبان 1388, 22:15 عصر
protected void Button2_Click(object sender, EventArgs e)
{
DataTable table = new DataTable();
// Declare DataColumn and DataRow variables.
DataColumn column;
DataRow row;
DataView view;
// Create new DataColumn, set DataType, ColumnName and add to DataTable.
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);
//
row = table.NewRow();
row["id"] = "dfsdf";
row["item"] = "saddsd";
table.Rows.Add(row);

view = new DataView(table);
GridView1.DataSource = view;
}
وقتی کلیدو میزنم چیزی رو نشون نمیده یعنی چیزی درون گرید ویو نمیره هیچ خطایی هم نمیاد

saied_genius
پنج شنبه 14 آبان 1388, 23:23 عصر
دقت کن::


شما يا بايد datagrid را به يک datatable و يا يک dataview وصل کنيد.

در هر دو صورت شما datarow يا dataviewrow را ميتوانيد اضافه کنيد و سپس datagrid را دوباره bind کنيد.

موفق باشيد.

جزو نکاتي است که هرکسي در شروع کار با ASP.NET با آن مواجه مي شود ( البته معمولاً ! )

آخر عمليات بايد ديتا را به گريد bind کني :


view = new DataView(table);
GridView1.DataSource = view;
GridView1.DataBind();
سوالي بود در خدمتم.

موفق باشيد.

slashslash2009
شنبه 16 آبان 1388, 22:05 عصر
دوست من سلام خوبی
ببین یه مشکلم حل شد اونم این بود که بالاخره تونستم رکوردمو وارد گریدویو کنم ولی یه مشکل دیگه هست اونم اینه که می خوام هر بار کلید add رو زدم یعنی همون کلیدی که محتوای تکست باکسامو میریزه تو گرید ویو میریزه رو قبلی و یک خط جدید تو گرید ویو درست نمیکه من میخوام هر دفعه با زدن کلید یک خط جدید درست کنم این کل کدمه :


DataTable table = newDataTable();
// Declare DataColumn and DataRow variables.
DataColumn column;
DataRow row;
DataView view;
//Create new DataColumn, set DataType, ColumnName and add to DataTable.
column = newDataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "id";
table.Columns.Add(column);
// Create second column.
column = newDataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "item";
table.Columns.Add(column);
//
row = table.NewRow();
row["id"] = TextBox1.Text;
row["item"] = TextBox2.Text;
table.Rows.Add(row);
//
view = newDataView(table);
GridView1.DataSource = view;
GridView1.DataBind();

ای کاش مثل برنامه windows application بود چه حالی میداد asp خیلی سخته و لی باید یاد بگیرم خدا

saied_genius
یک شنبه 17 آبان 1388, 10:15 صبح
توي 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();
}
}

slashslash2009
یک شنبه 17 آبان 1388, 11:17 صبح
آقا دستت درد نکنه درست شد فکر کنم با این روش خیلی کارا میشه کرد .

saied_genius
یک شنبه 17 آبان 1388, 17:02 عصر
فکر کنم با این روش خیلی کارا میشه کرد .


اينو خوب اومدي.

خوبي من و شما و امثال ما که اول win application کار کرديم بعد مي رويم سراغ web application اينه که خيلي از کاراي windows را راحتر مي توانيم تحت وب پياده کنيم.

بايت تقويم هم دستت درد نکنه ، کار جالبي بود .

اميدوارم هميشه موفق باشيد.

سوالي بود در خدمتم.

موفق باشيد.

slashslash2009
دوشنبه 18 آبان 1388, 11:08 صبح
دوباره سلام به نظر شما میشه تصویر رو هم به همین طریق به گرید ویو منتقل کرد من یه templatefield به گرید ویوم اضافه کردم و یک کنترل image توش گذاشتم و در imageurl.costom binding اینو نوشتم

Eval("pic","d:\\image\\{0}") یک فیلد دیگه هم به نام pic درست کردم . که با یک تکست باکسه دیگه نام عکس رو به table اضافه میکنم عکسام هم تو همون پوشه image هستش ولی موقع add چیزی رو نشون نمیده یعنی عکسرو نشون نمیده جاش همون مربع کوچیک رو نشون میده. باید چیکار کرد help

saied_genius
دوشنبه 18 آبان 1388, 11:10 صبح
اينو شرمندم ، تا حالا باهاش سروکار نداشتم.

اميدوارم دوستان ديگر کمک کنند.

موفق باشيد.

Himalaya
دوشنبه 18 آبان 1388, 12:53 عصر
تو تمپلیت یه asp:image قرار بده (حتما یه دیتا سورس که ستونهای یه جدول رو select کرده و به گرید بایند شده داری دیگه) یکی از این ستونها مثلا مسیر فایل عکس تو سرور رو توی خودش نگه میداره ... منظورم همه عکسای سایتت نیستا...فقط عکسایی که میخوای تو گرید نشون داده بشه... تو select مربوط به دیتا سورس این ستون رو هم انتخاب کن و بعد یه همچین کدی بنویس


<asp:Image ID="Image2" runat="server" ImageUrl='<%# Eval("column-url-name") %>'
Width="30px" Height="30px" />

slashslash2009
دوشنبه 18 آبان 1388, 13:36 عصر
باید عینه اینو بنویسم ("column-url-name") یا تغییرش بدم معنیش چیه

Himalaya
دوشنبه 18 آبان 1388, 13:58 عصر
منظورم اسم ستون آدرس عکس تو دیتابیسه که توسط دیتا سورس select شده

slashslash2009
دوشنبه 18 آبان 1388, 14:20 عصر
آقا خودم بالا خره درستش کردم من هیچ دیتا بیسی ندارم یعنی فقط یک گرید ویو هست به یک تیبل که به هیچ جایی متصل نیست هیچ دستور sql هم ندارم آقا سعید می دونن عکسهامم تو هارد دیسکم تو یه پوشه هستن که add کردمشون تو خود برنامه قبلا تو درایو d: بود یکی از ستونام آدرسه فایل توشه
کده میشه این
Eval("pic","~//Images//{0}")
pic اسم ستونیه که نام عکسها است البته فقط نامشونا نه مسیرشون
خداییش باحال شد ایول جای تشویق داره فکر کنم بشه با این کار یه جور مثلا سبد کالا درست کرد نظر شما دوستان چیه ؟

saied_genius
دوشنبه 18 آبان 1388, 17:35 عصر
هر نوع ابداع و نو آوري جاي تحسين دارد.

اميدوارم هميشه موفق باشيد.