PDA

View Full Version : پر کردن GridView توسط TextBox



mahmood1000
چهارشنبه 08 دی 1389, 00:03 صبح
سلام به همه دوستان

هرچه تو سایت دنبال این مطلب گشتم چیزی پیدا نکردم تو سایت دیگه از روی ناچار این تاپیک رو ایجاد کردم.
دوستان عزیز من میخوام داخل گریدم رو بوسیله یه TextBox پر کنم. نمی دونم از چه روشی این کار باید انجام بشه.

ممنون میشم از دوستانی که بتونند منو راهنمایی کنند.

با تشکر از همه دوستان

behiunforgiven
چهارشنبه 08 دی 1389, 00:21 صبح
دوست من میشه بیشتر توضیح بدی؟

یعنی اطلاعاتی رو به وسیله اون تکست باکس بگیری بریزی تو گرید ویو؟

یه جورایی مبهمه، واضح تر بگو تا اگه تونستم کمک کنم.

mahmood1000
چهارشنبه 08 دی 1389, 00:30 صبح
دوست عزیز من میخوام کاربر ابتدا کد و نام رو در دو تکس جدا گونه بریزه و وقتی دکمه add رو میزنه اطلاعات این دو تکس باکس وارد گرید بشه. نمیخوام اطلاعاتم وارد دیتابس بشه بعد تو گرید نماش داده بشه.

mtorabi
چهارشنبه 08 دی 1389, 02:58 صبح
دوست عزیز من میخوام کاربر ابتدا کد و نام رو در دو تکس جدا گونه بریزه و وقتی دکمه add رو میزنه اطلاعات این دو تکس باکس وارد گرید بشه. نمیخوام اطلاعاتم وارد دیتابس بشه بعد تو گرید نماش داده بشه.

دوست خوبم اگه درست متوجه شده باشم جواب سوال شما با سی شارپ اینه:
کد زیر رو به رویداد کلیک بر روی دکمه add اضافه کن


object[] objRow = { textBox1.Text, textBox2.Text };

dataGridView1.Rows.Add(objRow);

mahmood1000
چهارشنبه 08 دی 1389, 10:07 صبح
دوست عزیز این کد صحیح نیست.
تو قسمت dataGridView1.Rows.Add(objRow); ایراد میگیره

behiunforgiven
چهارشنبه 08 دی 1389, 10:20 صبح
به نظر من یه Datatable توی قسمت به صورت داینامیک ایجاد کن که شامل همون دو تا ستون هستش و هر بار که اون دکمه رو می زنی مقادیر اون تکست باکس ها رو به دیتاتیبل اضافه کن و گریدویو رو بایند کن به همین Datatable

البته اگه نخوای داده ها رو توی دیتابیس ذخیره کنی این داده ها پایدار نیستند.

mahmood1000
چهارشنبه 08 دی 1389, 10:44 صبح
تو این روش میشه تا قبل از اینکه کاربر صفحه را عوض کنه داده ها رو به کرید تا 5،6 سطر به گرید اضافه کرد؟

mahmood1000
چهارشنبه 08 دی 1389, 13:31 عصر
میخوام اطلاعات تو گرید طوری اضافه بشه که اگر تکراری بود ازش بگذره و اگر در گرید نبود وارد کنه

از دوستانی که تو این ضمینه مهارت دارند خواهش میکنم کمک کنند.

با تشکر

mehrdad201
چهارشنبه 08 دی 1389, 13:46 عصر
شما یه array بگیر. بعد با array کار کن. کد و نام رو بریز تو یه ابجکت (یه کلاس ایجاد کن برش) بعد ابجکتها رو بریز توی ارایه . بعد گرید ویو رو بایند کن به ارایه

موقع اضافه کردن به ارایه هم باید یه فانکشن داشته باشی که بیاد صحت تکراری رو چک کنه . اگه تکراری نبود ابجکت به ارایه اضافه میشه و بعد گرید ویو رو rebind کن

منظورم رو متوجه شدی ؟
نوشتن به این شکل برات مشکله ؟!؟

mahmood1000
چهارشنبه 08 دی 1389, 14:09 عصر
امکانش هست یه نمونه بزاری؟
تا حالا این مودلی کار نکردم

mehrdad201
چهارشنبه 08 دی 1389, 14:34 عصر
البته من در برنامه نویسی شی گرا و اصولی مهارت دوستان و اساتید رو ندارم. اما چشم.

فایل MyDataObject.cs رو به پروژه اضافه کن. این کلاس برای نگهداری اشیا و کالکشن ماست.

اینم محتویاتش.



using System;
using System.Collections.Generic;
using System.Web;

/// <summary>
/// Summary description for MyDataObject
/// </summary>
public class MyDataObject
{
public MyDataObject(string Code, string Name)
{
_Code = Code;
_Name = Name;
}

private string _Code;
public string Code
{
get { return _Code; }
set { _Code = value; }
}

private string _Name;
public string Name
{
get { return _Name; }
set { _Name = value; }
}

}

public class MyDataObjectCollection
{
public List<MyDataObject> AllData;

public MyDataObjectCollection()
{
AllData = new List<MyDataObject>();
}
public void Add(MyDataObject Item)
{
AllData.Add(Item);
}
}


در سورس aspx فایل default.aspx هم این کدها رو به داخل form1 اضافه کن



<div>
Code:
<asp:TextBox ID="CodeTextBox" runat="server"></asp:TextBox>
<br />
Name:
<asp:TextBox ID="NameTextBox" runat="server"></asp:TextBox>
<br />
<asp:Button ID="AddButton" runat="server" Text="Button"
onclick="AddButton_Click" />
<br />
<br />
<asp:GridView ID="AllDataGridView" runat="server">
</asp:GridView>
</div>و در اخر هم این کدها رو به default.cs اضافه کن


public static MyDataObjectCollection Collection;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Collection = new MyDataObjectCollection();
}
}

protected void AddButton_Click(object sender, EventArgs e)
{
if (CodeTextBox.Text != string.Empty &&
NameTextBox.Text != string.Empty)
{
MyDataObject Item = new MyDataObject(CodeTextBox.Text, NameTextBox.Text);
Collection.Add(Item);
AllDataGridView.DataSource = Collection.AllData;
AllDataGridView.DataBind();

}
}البته اگه صفحه رفرش بشه اطلاعات داخل ارایه پاک میشه. اما در پست بک صفحه اطلاعات از بین نمیره.

و اینکه من دیگه رویداد چک کردن حالت تکراری رو انجام ندادم.

64260

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

کالکشن ابجکتی است که حاوی چند ابجکت ایتم هست.

mahmood1000
چهارشنبه 08 دی 1389, 15:00 عصر
البته من در برنامه نویسی شی گرا و اصولی مهارت دوستان و اساتید رو ندارم. اما چشم.

فایل MyDataObject.cs رو به پروژه اضافه کن. این کلاس برای نگهداری اشیا و کالکشن ماست.


دوست عزیز نمی دونم چطور تشکر کنم .
از اینکه این همه زحمت کشیدی و وقت گذاشتی برام واقعا ممنونم.
خیلی این لطف شما برام با ارزشه

با تشکر

mehrdad201
چهارشنبه 08 دی 1389, 15:10 عصر
برنامه رو دیدید ؟ اون کاری که شما مد نظرت بود رو انجام میده

اخرش بگم که شما با اضافه کردن یه لایه دیتابیسی به برنامت میتونی اتوماتیک اخرین لیست کالکشن رو در دیتابیس ذخیره کنی. و خیلی کارهای دیگه..

امیدوارم که کارت رو راه انداخته باشه

mahmood1000
چهارشنبه 08 دی 1389, 16:03 عصر
مهرداد عزیز برنامه رو دیدم ، خیلی مفید بود
تا 2ساعت دیگه میرم روش کار میکنم الان با گوشی آمدم تو نت برای پیگیری ، به احتمال 90 درصد همونیه که میخواستم.
اگر جاییش مشکلی بود حتما مزاحمت میشم برای راهنمایی.

با تشکر دباره

mahmood1000
چهارشنبه 08 دی 1389, 19:03 عصر
مهرداد جان الان کد رو تست کردم واقعا دستت درد نکه.
حالا یه مشکلی دارم اینه که میخوام گرید چک بشه اگر نام و کدی که دارم وارد میکنم داخلش نبود add بشه اگر بود پیغامی بده که این داده قبلا وجود دشته
آیا امکانش هست؟؟؟؟؟

mehrdad201
چهارشنبه 08 دی 1389, 19:12 عصر
خب شما باید یه تابع اضافه کنی که قبل از اضافه کردن ایتم فراخوانی بشه و بررسی کنه که ایا مقدار مورد نظر در ارایه ما وجود داره یا نه.

اگه وجود داشت مقدار درست برمیگردونه. پس ایتم نباید اضافه بشه. اگه وجود نداشت مقدار نادرست برمیگردونه و ایتم میتونه اضافه بشه. سخت نیست والا

mahmood1000
چهارشنبه 08 دی 1389, 19:15 عصر
مشکل من با کار با کلاسه.
راستشو بخوای از این کلاسی که دادید چیزی نفهمیدیم.

این تابع که میگی کجا باید اضافه بشه.

mehrdad201
چهارشنبه 08 دی 1389, 20:04 عصر
اینم با حالت سرچ :)

فقط حواستون باشه بری سرچ هم کد و هم نام رو با هم چک میکنه. مقایسه هم در حالت lower case انجام میشه.

بنابرین میشه 2 رکورد داشت که اسماشون یکی ولی کدهاشون متفاوت هست
یا دو رکورد داشت که کدشون یکی و اسمشون متفاوت هست.

این یک برنامه تستی است. منطق مقایسه رو باید خودتون مشخص کنید.

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

خود من دارم سعی میکنم که مسلط بشم روش.

64278

mahmood1000
چهارشنبه 08 دی 1389, 20:40 عصر
دوست خوبم
مشکل حل شد.
واقعا ممنونم. منبعی میتونی معرفی کنی که بتونم شی گرا رو (مثل همین کلاسی که برای من نوشتید ) آموزش بده از پایه؟

بازم ممنونم

mehrdad201
چهارشنبه 08 دی 1389, 21:00 عصر
اب در کوزه و شما تشنه لب میگردی ؟ منبع !!!!!!! چه منبعی بهتر از اینترنت :) از همین فروم (http://barnamenevis.org/showthread.php?141777-%D9%81%D9%87%D8%B1%D8%B3%D8%AA-%D9%85%D9%82%D8%A7%D9%84%D8%A7%D8%AA%D8%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7-%D9%88-%D8%AA%D8%A7%D9%BE%DB%8C%DA%A9-%D9%87%D8%A7%DB%8C-%D9%85%D9%81%DB%8C%D8%AF-%D8%AA%D8%A7%D9%84%D8%A7%D8%B1-ASP.NET-%28%D8%AF%D8%B1-%D8%AD%D8%A7%D9%84-%D8%AA%DA%A9%D9%85%DB%8C%D9%84%29&p=659290#post659290) شروع کن

یه عالمه استاد و رفیق دور و اطراف ما هستند در این فروم

mahmood1000
چهارشنبه 08 دی 1389, 21:27 عصر
تو این که شکی نیست

خیلی تا پیک عالیی بود

مرسی