PDA

View Full Version : سوال: دستورات تغییر یافته



htmbarnamenevisl
پنج شنبه 28 آذر 1387, 07:55 صبح
من این سوال تو بخش فروشگاه آنلاین هم مطرح کردم اما کسی جواب نداد به ناچار اینجا مطرحش کردم
تو این پروژه از دستوراتی استفاده شده که من نمی دونم اینا چی بودن که اینطوری تغییر کردن در واقع شکل دستورات طبیعی نیست این یه نمونه از دستورات داخل صفحه admin group هست در واقع تو کل سایت همینجوریه
دستورات اینا هستن

using DstGroupsTableAdapters;




private void BindGrid()
{
tGroupsTableAdapter sda = new tGroupsTableAdapter();
DstGroups ds = new DstGroups();
sda.Fill(ds.tGroups);
dg.DataSource = ds.tGroups;
dg.DataBind();
}
protected void btnInsert_Click(object sender, EventArgs e)
{
tGroupsTableAdapter sda = new tGroupsTableAdapter();
if (dg.SelectedIndex > -1)
{
sda.Update(txtGroup.Text.Trim(), int.Parse(dg.SelectedValue.ToString()));
Label1.Text = "ویرایش گروه با موفقیت در سیستم ذخیره گردید";
}
else
{
sda.Insert(txtGroup.Text.Trim());
Label1.Text = "اطلاعات گروه جدید با موفقیت در سیستم ذخیره گردید";
}
txtGroup.Text = "";
BindGrid();
dg.SelectedIndex = -1;


}
protected void dg_SelectedIndexChanged(object sender, EventArgs e)
{
tGroupsTableAdapter sda = new tGroupsTableAdapter();
DstGroups ds = new DstGroups();
sda.FillByCode(ds.tGroups, int.Parse(dg.SelectedValue.ToString()));
txtGroup.Text = ds.tGroups.Rows[0][ds.tGroups.fNameColumn].ToString();
}
protected void btnDelete_Click(object sender, EventArgs e)
{
if (txtGroup.Text.Trim() != "" && dg.SelectedIndex > -1)
{
tGroupsTableAdapter sda = new tGroupsTableAdapter();
sda.Delete(int.Parse(dg.SelectedValue.ToString())) ;
Label1.Text = "حذف گروه با موفقیت انجام شد";
BindGrid();
txtGroup.Text = "";
dg.SelectedIndex = -1;
}

مثلا این DstGroups و یا using DstGroupsTableAdapters;
چه طوری این شکلی شدند


من این پروژه رو دقیق نگاه کردم هیچ جایی از این دستورات





using System.Data.SqlClient;

SqlCommand cmd = new SqlCommand();
SqlConnection Con = new SqlConnection();
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();




DataSet ds = new DataSet();




برای ارتباط با بانک استفاده نکرده ولی سیستم اونا رو به راحتی میشناسه



و سایت به راحتی داره کار می کنه


من این دستورات سایت فروشگاه آنلاین داخل یه صفحه دیگه از یه پروژه گذاشتم تا شاید بفهمم چه طوری کار می کنه اما روی همش error میده



Error 1 The type or namespace name 'DstGroupsTableAdapters' could not be found (are you missing a using directive or an assembly reference?) C:\Inetpub\wwwroot\d\admin\group.aspx.cs 11 7 C:\...\d\
خواهش میکنم این دستورات رو کامل برام توضیح بدید
:اشتباه:من تازه کارم و فهم خیلی از دستورات برام مشکله :اشتباه:

milade
پنج شنبه 28 آذر 1387, 08:59 صبح
سلام

using DstGroupsTableAdapters;
این کد میاد یه namespace رو تعریف میکنه . حالا چی هست؟!
این احتمالا شما درون ریشه bin و یا app_code یه فایل دارید به نام DstGroupsTableAdapters (ممکنه این نام هم نباشه اما بالاخره این فضانام داخل یکی از این کلاسها یا dll ها هست)

tGroupsTableAdapter sda = new tGroupsTableAdapter();
DstGroups ds = new DstGroups();
sda.Fill(ds.tGroups);
dg.DataSource = ds.tGroups;

این کد هم مثلا DstGroups ds = new DstGroups(); این میاد و از همون فضای نام یه کلاس میگیره به نام DstGroups تا از اونجا برای ساخت یه دیتاست استفاده بشه .
حالا چرا این کدها مثل کدهای شما نیست؟!
دلیلش اینه که اگه هر برنامه نویس بخواد حتی کدهای free رو بدون هیچ ملاحظه ای رها کنه که دیگه ....
دوما در پروژه برای راحت تر شدن کارشون میان از یه سری دستورات تکراری جلوگیری میکنن و براش یه کلاس یا فضانام میسازن .

من این دستورات سایت فروشگاه آنلاین داخل یه صفحه دیگه از یه پروژه گذاشتم تا شاید بفهمم چه طوری کار می کنه اما روی همش error میده
علتش اینه که شما فضانام رو وارد کردید ، اما اون فایل وجود نداره که برنامه بره از اونجا تغذیه کنه و کدها رو بخونه پس با وارد کردن فایل مربوطه از bin یا app_code پروژه به راحتی این مشکل حل میشه!
(اگه مشکلی داشتید بگید)
موفق باشید

mahdi_farhani
پنج شنبه 28 آذر 1387, 09:08 صبح
از طرز نام گزاریش که تقریباً میشه گفت مجارستانی کار کرده ، 80% مطمئنم که از Dataset.xsd استفاده کرده . داخل پوشه App_code ببین فایلی با پسوند XSD وجود داره

htmbarnamenevisl
پنج شنبه 28 آذر 1387, 09:55 صبح
ببخشید این Dataset.xsd چی هست و چه جوری میشه ایجادش کرد و ازش استفاده کرد

milade
پنج شنبه 28 آذر 1387, 10:05 صبح
این یه دیتاست هست
برا ایجادش هم بیشتر توی win app ها یه کار میاد و اصلا حرفه ای نیست که بخواید به جای یه خط کد یه فایل با 100 تا خط بسازید
این روشها مال زمان قاجار یا زند بود(فکر کنم فتحعلی شاه این روش رو پیشنهاد داد) D:
شما این سورس رو بیخیال شو وقتی شما میتونی بنویسی:

dim ds as new dataset
دیگه چرا ....
بازم اگه خواستید راهنمایی میکنم که چه طور بسازیدش(الان یادم نیست چون روش ... هست)
موفق باشید

mahdi_farhani
پنج شنبه 28 آذر 1387, 11:23 صبح
این روشها مال زمان قاجار یا زند بود(فکر کنم فتحعلی شاه این روش رو پیشنهاد داد) D:
این امکان در فریم ورک 2 اضافه شده ، پس زیاد هم ربطی به قاجار نداره.

datset.xsd یک شما (scheme) هست که بر اساس xml پیاده سازی میشه ، و یک از روشهایی هست که برای اتصال به دیتابیس شما میتونید ازش استفاده کنید، البته پشت پرده در اصل 3 تا فایل هست.....
datset یک از انواع Typeddataset محسوب میشه
این شما برای شما چند چیز را به صورت ویزارد تولید میکنه،DataTable,DataAdapter,DataRow و درشما حتی میتوانید Relation را هم برقرار کنید . در کل برای پروژه های کوچک بد نیست.


dim ds as new dataset
شما که حرف از حرفه ای بودن میزنی ، به همین سادگی هم نمیشه ، چون Typed نیست

htmbarnamenevisl
پنج شنبه 28 آذر 1387, 11:56 صبح
ببخشید من این فایل داخل app-code دیدم اما به قدری پیچیده هست که ازش اصلا سر در نمیارم
یه مطلب خوب سراغ ندارید به من کمک کنه دستورات داخل datase.xsd رو بفهمم .
من دارم با c# بر نامه مینویسم مثلا به جای همین dst group اگه نخوام از datase.xsd استفاده کنم چی باید بنویسم
ببخشید امروز حسابی کلافتون کردم

mahdi_farhani
پنج شنبه 28 آذر 1387, 12:05 عصر
دوست عزیز احتیاج نیست شما براش کد بنویسید ، dataset.xsd برای شما کدهای لازم را ایجاد میکنه ، اگر جستجو کنی مقاله در همین رابطه آقای نگاهی داداند که همه چیز این دیتاست را توضیح دادن ( اگر اشتباه نکنم اسم پستش معماری چند لایه بود )

htmbarnamenevisl
پنج شنبه 28 آذر 1387, 12:32 عصر
دوستان میدونم توقع خیلی زیادیه ولی خواهش میکنم یه کم از این کدایی که اینجا نوشته شده و عجیب غریب به زبان قابل فهم در بیارید و اینجا بذارید مثلا همین تابع bindgrid
خیلی خیلی ممنون

mahdi_farhani
پنج شنبه 28 آذر 1387, 12:39 عصر
private void BindGrid()
{
tGroupsTableAdapter sda = new tGroupsTableAdapter();
DstGroups ds = new DstGroups();
sda.Fill(ds.tGroups);
dg.DataSource = ds.tGroups;
dg.DataBind();
}

sda یک رابط (DataAdapter) هست که در فایل XSD ایجاد شده
dstGroup دیتاسیت اون جدول هست (امیدوارم که بدونی دیتاست چیه)
دستور fill میره و کوئری که برای پر کردن اطلاعات هست را صدا میزنه ، به طور معمول همون Select هست
و دو دستور آخر هم مربوط به بایند کردن اطلاعات در دیتاگرید هست
----------------
در ضمن تولد من تو این تاریخ نیست ، این تاریخ اشتباه است