# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Web Forms >  سورس یه سایت با دات نت

## Modifier

سلام

این یه سورس سایت است. با DOCUMENT

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

هر کی دوست داره دانلود کنه ... قابل تحمله! - گرافیکش هم خوبه.

من این پروژه رو به عنوانه یه پروژه درسی تحویل دادم.

*توجه داشته باشید که استفاده از این پروژه برای مصارف تجاری و برای تحویل به استاد جایز نیست.(یعنی من راضی نیستم) . فقط برای آموزش بکار رود.*

توضیحات و امکانات :

عنوان پروژه : آموزش مجازی

دارای کنترل پانل استاد - دانشجو و مدیر

آزمون میان ترم - پایان ترم - کویئز

آموزش بصورت متنی و ...


و DOCUMENT
میشه ازش استفاده کرد .


امید وارم مفید باشه.


یا علی

----------


## Modifier

هر کسی هم که نظری داره در مورد اموزش مجازی بده 
بخصوص در مورد ویدئو کنفرانس و ...

ممنون

----------


## Modifier

DB اصلاح شد . هر کی قبلا  دانلود کرده دوباره دانلود کنه

ممنون

یا علی

----------


## golhay2

با اینکه webconfig را اصلاح کردم باز با بانک ارتباط برقرار نمیکنه

----------


## Modifier

با سلام

از connectionstring زیر استفاده کن :

البته کد زیر پیشنهاد نشده است :
{not recommended}


server=localhost;database=db_el_prj;User ID=sa;Password=;


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

بهترنش که مایکروسافت توی mSDN پیشنهاد کرده اینه :


Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=db_EL_prj;server=(local)


یا علی

----------


## minoooooo

اول از کار خوبتون تشکر می کنم .
بعد یه سوال ؟
توی صفحه ی Term ، قسمتی که یه سری سوال به صورت تصادفی ایجاد می شه و توی یک session ریخته می شه.بعد هم یک sp ,...
سوالم اینه پس کی از این session  استفاده می شه ؟؟؟؟

----------


## Modifier

سلام علیکم

ابتدا توسط کد زیر اعدادی تصادفی به تعداد سوالاتی که باید از لیست کل سوالات حذف شود ، تولید میکنیم :

if (!IsPostBack && Session["no_ref"] == "0")
{
Random rnd_num = newRandom();
bool f = false;
for (int i = 1; i <= count_qst_for_trm - count_qst; i++)
{
int num_rnd = rnd_num.Next(0, count_qst_for_trm);
for (int j = 1; j <= i; j++)
{
f = false;
if (Convert.ToInt32(Session["ar_num" + j]) == num_rnd)
{
f = true;
i = i - 1;
break;
}
}
if (f == false)
{
Session["ar_num" + i] = num_rnd;
}
}
}


با کد زیر کل سوالات مربوطه را واکشی مکنیم :

sql_da.SelectCommand.Parameters.Clear();
sql_da.SelectCommand.CommandText = "sp_sel_qst_for_trm";
sql_da.SelectCommand.Parameters.AddWithValue("@crsid", Session["crsid"].ToString().Trim());
sql_conn.Open();
sql_da.Fill(ds, "sel_qst");
sql_conn.Close();


با کد زیر به همان تعدادی که عدد تولید شد ، با استفاده از عدد تولید شده که در 
 
Session["ar_num" + i]

قرار دارد به رکورد مورد نظر میرویم و آن را خذف می کنیم و session مربوط رو هم برابر صفر قرار میدهیم :


for (int i = 1; i <= count_qst_for_trm - count_qst; i++)
{
ds.Tables["sel_qst"].Rows[Convert.ToInt32(Session["ar_num" + i])].Delete();
Session["current_ans" + Session["ar_num" + i]] = 0;
}


حالا با کارهای انجام شده ما یک سری سوال داریم به تعداد مشخص شده توسط استاد برای امتحان مورد نظر که تعداد ضلفی آن بصورت تصادفی خذف شده است.

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

حالا بریم سر اصل مطلب که session

Session["current_ans" + i]

برای چه کاری است ؟

این session جواب سوال متناظر خود در ds را نگهداری می کند مثلا 
Session["current_ans1"] جواب سوالی که در رکورد یک(1) از ds رو در خود ذخیره میکند.

و استفاده آن هنگامی است که می خواهیم نتیجه امتحان رو حساب کنیم توسط کد زیر :


protectedvoid btn_res_Click(object sender, EventArgs e)
{
grd_qst.Enabled = false;
RadioButtonList rdbl = newRadioButtonList();


for (int i = 0; i <= grd_qst.Rows.Count - 1; i++)
{
rdbl = (RadioButtonList)grd_qst.Rows[i].FindControl("ans");
if (rdbl.SelectedIndex >= 0)
{
int ansed = Convert.ToInt32(rdbl.SelectedValue);
for (int j = 0; j <= count_qst_for_trm - 1; j++)
{
if (Session["current_ans" + j].ToString() != "0")
{
if(ansed == Convert.ToInt32(Session["current_ans" + j].ToString()))
count_ans_currect += 1;
else
count_ans_incurrect += 1;
Session["current_ans" + j] = "0";
break;
}
}
}
else
count_asn_without += 1;
}
/////////////////////////////////////////////////////////////////////
sql_da.SelectCommand.Parameters.Clear();
sql_da.SelectCommand.CommandText = "sp_sel_max_eid";
sql_da.SelectCommand.Parameters.AddWithValue("@usr", Session["usr"].ToString());
sql_conn.Open();
sql_da.Fill(ds, "tbl_max");
sql_conn.Close();
//////////////////////////////////////////
sql_da.SelectCommand.Parameters.Clear();
sql_da.SelectCommand.CommandText = "sp_upd_cnt_trm";
sql_da.SelectCommand.Parameters.AddWithValue("@eid", Convert.ToInt32(ds.Tables["tbl_max"].Rows[0].ItemArray[0].ToString()));
sql_da.SelectCommand.Parameters.AddWithValue("@grade", ((((count_ans_currect * 3) - count_ans_incurrect) * 100) / ((count_asn_without + count_ans_incurrect + count_ans_currect) * 3)));
sql_da.SelectCommand.Parameters.AddWithValue("@cans", count_ans_currect);
sql_da.SelectCommand.Parameters.AddWithValue("@icans", count_ans_incurrect);
sql_da.SelectCommand.Parameters.AddWithValue("@woans",count_asn_without);
sql_da.SelectCommand.Parameters.AddWithValue("@type", "پایان ترم");
sql_conn.Open();
sql_da.Fill(ds);
sql_conn.Close();
ds.Clear();
Panel1.Visible = true;
lbl_cans.Text = count_ans_currect.ToString();
lbl_icans.Text = count_ans_incurrect.ToString();
lbl_woans.Text = count_asn_without.ToString();
lbl_res.Text = Convert.ToString(((((count_ans_currect * 3) - count_ans_incurrect) * 100) / ((count_asn_without + count_ans_incurrect + count_ans_currect) * 3)));
}
 

موفق باشید.

یا علی.

----------


## minoooooo

ممنون از جوابتون.
من برای تصادفی شدن سوالات ترجیح دادم سمت sql این کار رو بکنم .

----------


## Reborn

سلام.
اولا تشکر خیلی زیاد که با قرار دادن این پروژه مشکلات زیادی از من برطرف شد.
دوما اگر داخل سورس هم از کامنت استفاده میکردی خیلی خوب بود.
من دهنم سرویس شد تا تونستم کاربرد برخی از متغییر ها رو بفهمم.
بعضی ها رو هم هنوز نفهمیدم
به هر صورت کارمون راه افتاد ... با تشکر

----------


## Modifier

> سلام.
> اولا تشکر خیلی زیاد که با قرار دادن این پروژه مشکلات زیادی از من برطرف شد.
> دوما اگر داخل سورس هم از کامنت استفاده میکردی خیلی خوب بود.
> من دهنم سرویس شد تا تونستم کاربرد برخی از متغییر ها رو بفهمم.
> بعضی ها رو هم هنوز نفهمیدم
> به هر صورت کارمون راه افتاد ... با تشکر


علیک سلام

زیاد هم که طول نکشیده!

میگفتی ، میگفتم ... البته شاید بیشتر طول میکشید.

موفق باشی.

یا علی.

----------


## بیتافرهی

من از sql2005 استفاده می کنم.هنگامی که فایل دیتابیس شما را attach کردم ،با مشکل زیر روبرو شدم.
البته جداول را نشان می دهد ولی در نمایش دیاگرام ،این ارور را به من داد.چرا؟

----------


## Hossis

> هر کسی هم که نظری داره در مورد اموزش مجازی بده 
> بخصوص در مورد ویدئو کنفرانس و ...
> 
> ممنون


 ويدئو کنفرانس تو سايت مشکله چون سرعت اينترنت اونقدر زياد نيست که بتونه اونو دريافت کنه
آموزش متني بهتره

----------


## محمدامین شریفی

> ويدئو کنفرانس تو سايت مشکله چون سرعت اينترنت اونقدر زياد نيست که بتونه اونو دريافت کنه
> آموزش متني بهتره


من قبلا سایت Modifier را امتحان کردم و بهش silverlight ای اظافه کرده بودم که بجای "جعبه متن" پیغام ها رو توی silverlight نشون می داد.اما silverlight 1.1 مشکلی که داشت،RTL رو پشتیبانی نمی کرد.اما توی 2 میشه حروف "راست چین" را نوشت.کد کردن هم بر پایه UTF-8 بود.
به نظر من DB سایت این قابلیت رو داره که بهش RIA اظافه بشه.حالا محتوای RIA بنابر نیاز و شرایط هر دانشگاه تغییر می کنه. Modifier جان،به نظر من آموزش های کلاس های MS خیلی خوب ایده به آدم میده.
در ضمن،سایت را جایی UP کردی؟(host یا codeplex)

----------


## yardel

دوست خوبم از لطفتون ممنونم.
ولی من یه جای برنامه رو نفهمیدم اگر کمکم کنی ممنونت می شم .اون اینکه کارایی کد زیر رو توضیح بده،البته خط به خط:
<connectionStrings>
</connectionStrings>
<appSettings>
<addkey="conn_str"value ="server =localhost;database=db_EL_prj;User ID=identifier;Password=261261"></add>
<addkey="conn_str"value ="server = .;Initial Catalog=db_EL_prj;User ID=sa;Password=2500213;"></add>
<addkey="conn_str_by_servsr_name"value ="Data Source=modifier;Initial Catalog=db_EL_prj;Integrated Security=SSPI;"></add>
<addkey="Not recommended"value="server=localhost;database=db_el_prj;User ID=sa;Password=2500213;"></add>
<addkey="recommended_"value="Data Source=(local);Initial Catalog=db_EL_prj;Integrated Security=SSPI;" ></add>
<addkey="recommended_better_"value="Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=db_EL_prj;server=(local)"></add>
<addkey="Not recommended"value="server=localhost;database=db_el_prj;User ID=sa;Password=;"></add>
<addkey="conn_str"value ="server = .;Initial Catalog=db_EL_prj;User ID=sa;"></add>
</appSettings>
<system.web>
<compilationdebug="true" />
<pagesvalidateRequest="false" />
</system.web>

اصلا چرا برای connection از این روش استفاده کردی

----------


## sam166

این ارور از چیست موقع ثبت نام و چه جور حلش کنم
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

----------


## yardel

سلام .دوست عزیز
از لطف شما ممنونم.
من در قسمت List_Student.aspx مشکل زیر رو دارم.

لطفا کمکم کنید.

در کد زیر شماره دانشجویی به صورت opendialog گرفته نمی شود .چه کار باید کرد.
function opendialog()
{ 
var id = prompt("لطفا شماره دانشجویی را وارد کنید :","")
addr = "../List-Student.aspx?id=" + id;
open(addr,"null","titlebar=no,toolbar=no,location=no,status=no,  menu bar=no,scrollbars=yes,resizable=no,width=780,heigh t = 400");
}
///////////
کد بالا جواب نمی ده .لطفا کمکم کنید.

----------


## sam166

بابا کسی نیست جواب بده

----------


## yardel

Modifier عزیز چرا جواب نمی دی؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

----------


## masoudseddighi

سلام
بابت کد ممنونم
فقط میشه منو یکم راهنمایی کنین که چطوری می تونم این پروژه را اجرا منم؟
یعنی چطور با پایگاه داده ارتباط برقرار کنم .یعنی جز اینکه این فایلو داخلvisual studio  باز میکنم چه کارای دیگه نیاز هستش که انجام بدم؟
فایل پایگاه داده را کجا باید کپی کنم؟
اگه میشه کمکم کنین چون واقعا بهش نیاز دارم
ممنون

----------


## naser8990

سلام
خیلی خیلی ممنونم

ویه سوال

اینکه موقع ثبت نام ای ارور رو میده

Could not find stored procedure 'sp_dup_usrid_std


کمک ..................................................  ...................................!!!!!!!!!!!!!!!  !!!!!!!!!!!!!!!!!!!!!!!!!!

----------


## ArchLord

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

----------


## Modifier

> کسی نسیت جواب سوال هارو بده؟!؟


با سلام خدمت همه دوستان...
شرمنده خیلی وقت بود به اینجا سر نزده بودم...
سرباز بودم...بعدش ارشد... و بعدترش مشغول کار ...

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

البته این پروژه ماله 3 سال پیشه...

در خدمتم...

موفق باشین...

یاعلی.

----------


## Modifier

> سلام
> خیلی خیلی ممنونم
> 
> ویه سوال
> 
> اینکه موقع ثبت نام ای ارور رو میده
> 
> Could not find stored procedure 'sp_dup_usrid_std
> 
> ...


سلام

شما DB رو بطور صحیح نصب نکرده اید یا اصلا نصب نکردید...

میبایستی پس از دانلود ، آن را Attach کنید.

موفق باشید.

یاعلی.

----------


## Modifier

> سلام
> بابت کد ممنونم
> فقط میشه منو یکم راهنمایی کنین که چطوری می تونم این پروژه را اجرا منم؟
> یعنی چطور با پایگاه داده ارتباط برقرار کنم .یعنی جز اینکه این فایلو داخلvisual studio  باز میکنم چه کارای دیگه نیاز هستش که انجام بدم؟
> فایل پایگاه داده را کجا باید کپی کنم؟
> اگه میشه کمکم کنین چون واقعا بهش نیاز دارم
> ممنون


با اینکه ممکنه جوابتون رو گرفته باشین ولی به طور کلی عرض میکنم که...

کاره خاصی نیاز نیست بکنید.. فقط DB رو Attach کنید و پس از آن ConnectionString رو تنظیم کنید و بعد پروژه رو اجرا کنید.

موفق باشید.

یاعلی.

----------


## ashkanb-j

سلام به همه دوستان و ممنون از اشتراک این پروژه . فقط چند تا سوال داشتم ممنون میشم اگر راهنمای کنبد.قسمتهای را که ستاره زدم یک توضیح مختصر بدین
if (!IsPostBack)
            {
 try
                {

                    sql_adp.SelectCommand.CommandText = "sp_sel_crs2";

                    sql_conn.Open();
                   ** sql_adp.Fill(ds, "crs_selected");**
                    sql_conn.Close();

                    drdcrs_name.DataSource = ds;
                  **  drdcrs_name.DataMember = "crs_selected";**
                    drdcrs_name.DataValueField = "crs_id";
                    drdcrs_name.DataTextField = "crs_name";
                    drdcrs_name.DataBind();
                    ds.Clear();
                }
 catch (Exception exp)
                {
                    sql_conn.Close();
                    lbl_er.Text = "خطا در انجام عملیات !";
                }
            }
        }

 else
        {
            Response.Redirect("managerER.aspx");
        }
    }

 protected void btn_ok_Click(object sender, EventArgs e)
    {
 if (txtid.Text == "")
        {
            lbl_er.Text = "ابتدا جستجو کنید!";
        }
 else

 try
        {

            sql_comm.CommandText = "sp_del_crs";

        **  sql_comm.Parameters.AddWithValue("@crsid", txtid.Text.Trim()); **

            sql_conn.Open();
            sql_comm.ExecuteNonQuery();
            sql_conn.Close();

----------


## Modifier

علیک سلام
اول یه نکته خدمت شما : سعی کنید برای نوشتن مطالب از ابزارهای موجود استفاده کنید تا مثلا کد بدین صورت نوشته نشه ..برای کدها از ابزاری که به شکل # هست استفاده کنید.

ممنون




> سلام به همه دوستان و ممنون از اشتراک این پروژه . فقط چند تا سوال داشتم ممنون میشم اگر راهنمای کنبد.قسمتهای را که ستاره زدم یک توضیح مختصر بدین


در مورد خود کد توضیح بدم یا در مورد کاری که داره تو پروژه انجام میده ؟

----------


## ashkanb-j

> علیک سلام
> اول یه نکته خدمت شما : سعی کنید برای نوشتن مطالب از ابزارهای موجود استفاده کنید تا مثلا کد بدین صورت نوشته نشه ..برای کدها از ابزاری که به شکل # هست استفاده کنید.
> 
> ممنون
> 
> 
> در مورد خود کد توضیح بدم یا در مورد کاری که داره تو پروژه انجام میده ؟


در مورد اینکه کدها در پروژه چه کاری انجام میدهند

----------


## Modifier

سلام 

*اول خدمت شما عرض کنم و همه دوستان که وقتی میخواهید کار قسمتی از کد رو براتون توضیح بدم لطفا بگین این کد مربوط به کدوم قسمت از پروژه هست*

*ممنون*

و اما جواب سوالات  : 

** sql_adp.Fill(ds, "crs_selected");**
توسط یک SP  به نام sp_sel_crs2 اطلاعات مربوط به دورس رو میگیریم و این اطلاعات توط کد بالا در یک DataSet ذخیره میشود.تا بتوان آن را به Data Container ها اختصاص داد.
** drdcrs_name.DataMember = "crs_selected";**

اطلاعات مربوط به دروس که در DataSet ی به نام ds ذخیره شده در داخل جدولی به نام crs_Seleted میباشد که این جدول در داخل DataSet میباشد که در کد اول ساخته و نام گذاری شده است.
drdcrs_name یک DropDownList میباشد که خاصیت DataMember نشان میدهد که این Object اطلاعاتش رو از کدام قسمت یا جدول DataSet بخواند چون ممکن است در داخل یک DataSet چندین جدول باشد.
** sql_comm.Parameters.AddWithValue("@crsid", txtid.Text.Trim()); **

ما میخواهیم یکی از دروس را حذف کنیم توسط یک SP به نام sp_del_crs برای این کار نیاز به Id درس مربوطه داریم که آن را توسط دستور ذیل به SP پاس میدهیم.

موفق باشید.
یاعلی.

----------


## saeedjafari

با درود
در قسمت داکیومنت نوشتین که برای تغییر Connection string  از اونجا میتونید تغییر بدید
ممنون میشم توضیح بدین که چجوری باید تغییر داد ...اونهم در فایل WEB.CONFIG ??

----------


## Modifier

> در قسمت داکیومنت نوشتین که برای تغییر Connection string از اونجا میتونید تغییر بدید
> ممنون میشم توضیح بدین که چجوری باید تغییر داد ...اونهم در فایل WEB.CONFIG ??


سلام
من فقط یک جا اسم از ConnectionString آوردم و گفتم که اگر مشکلی در اتصال رخ داد از داخل Web.Config اون رو تغییر دهید...همین!



> از اونجا میتونید تغییر بدید


متوجه منظورتون نشدم !!

----------


## saeedjafari

> سلام
> من فقط یک جا اسم از ConnectionString آوردم و گفتم که اگر مشکلی در اتصال رخ داد از داخل Web.Config اون رو تغییر دهید...همین!
> 
> متوجه منظورتون نشدم !!



با درود
من نمیتونم با دیتابیس ارتباط برقرار کنم / طبق فرمایش شما بایستی کانکشن استرینگ رو تغییر بدم
نحوه تغییر آن در Webconfig  چجوری هست؟؟؟ همین !
چون مثلا برای ثبت نام اررورر 404 میده که نمیتونه با دیتابیس ارتباط برقرار کنه

----------


## Modifier

> من نمیتونم با دیتابیس ارتباط برقرار کنم / طبق فرمایش شما بایستی کانکشن استرینگ رو تغییر بدم
> نحوه تغییر آن در Webconfig چجوری هست؟؟؟ همین !


سلام
شما فایل رو با VS باز کنید و اون ConnectionString ی رو که میخواهید انتخاب کنید و بقیه رو Comment کنید.
یه نگاهی هم به پست شماره 5 بندازید انشاالله مفید باشه..



> چون مثلا برای ثبت نام اررورر 404 میده که نمیتونه با دیتابیس ارتباط برقرار کنه


Error شماره 404 مربوط به DataBase نیست :
*The page cannot be found*
 

The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.Please try the following:
If you typed the page address in the Address bar, make sure that it is spelled correctly.Open the home page, and then look for links to the information you want.Click the Back button to try another link.*HTTP 404 - File not found*
*Internet Information Services*
 
 

Technical Information (for support personnel)
More information:
Microsoft Support

----------


## saeedjafari

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

با تشکر

error_1_lrn.jpg

----------


## saeedjafari

با درود و خسته نباشید
یه مسلمون پیدا نمیشه این مشکل رو حل کنه بتونیم از این پروژه استفاده آموزشی بکنیم ؟؟!!



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


 :خجالت:  :لبخند گشاده!:

----------


## ashkanb-j

سلام  و خسته نباشبد به همی دوستان و جناب modifier

اگر ممکن در مورد gride view و چگونگی قرار دادن multiple choiceبا  radio button و ارتباط با گزینه ها بدهید.
برای اضافه کردن ستون من هر چی از properties gride view گشتم فقط check box بود آن هم به صورت تکی.
منون

----------


## saber187518

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

----------


## ali_mnkt

آقا برای چک کردن ویدئو کنفذانس باید با چه نوع کاربری و در چه صفحه ای وارد بشم ؟

----------


## mobtaker61

ممنون از بابت پروِة ولی من یک مشکل دارم
ظاهرا از تابعی بنام persianutil برای تاریخ استفاده کردید که اون تابع روی کامپوتر خودتون جامونده.
اگه میشه فایل رو آپلود یا مسیر دانلود بدید

باتشکر

----------

