PDA

View Full Version : گفتگو: آزمون آنلاین



mjt10063
جمعه 20 اردیبهشت 1392, 16:46 عصر
سلام دوستان خسته نباشید:لبخندساده:

به این پست سر بزنید کلیک کنید (http://barnamenevis.org/showthread.php?397669-%D8%A2%D8%B2%D9%85%D9%88%D9%86-%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86&p=1766683&viewfull=1#post1766683)

آخر هم پروژه را میزارم واسه بچه ها تا بتونند ازش استفاده کنند

اولین پروژه ام با ASP.NET میشه که دارم رسما روش کار میکنم
باید بگم که زیاد بلد نیستم:لبخند:
قسمت عضو گیری، لاگین ، تعیین هویت، دادن وظیفه (کاربر ، استاد و مدیر)
همه و همه انجام شده
و الان دارم روی قسمت طراحی سوال کار میکن

نظر خودم (گفتم بلد نیسم ها بهم نخندین)
بخش اول : اینه که یه توی جدول 4 ستون بزارم به نام های Q , A1 , A2 ,A3 ,A4
که Q سوال و A جواب های میشن

بعد بیام توی صفحه 4 تکسباکس بزارم و به ترتیب سوال و بعد 4 جواب رو دریافت کنم و وارد جدول کنم
البت بگم که توی جدول azmon دو ستون دیگه هم هست به نام های کد آزمون و کد درس

بخش دوم : و توی صفحه ای که قرار سوال ها نمایش داده بشه از جدول واکشی کنم و در صفحه نمایش بدم.
مشکل اصلی توی بخش دوم که من باید توی صفحه چند تا ردیوباتون بزارم ؟؟ و یا چند تا لیبل برای نمایش سوال بزارم ؟؟
آیا امکانش هست که توی صفحه نمایش سوال به صورت پویا به تعداد سوال لیبل و ریدوباتن اضافه بشه؟
آیا این روش اصلا رسما درست هست؟؟:گیج::متعجب:

خواستم بدونم نظری که دادم اصلا درست هست که ادامه بدم یا نه
اساتید نظر دیگه هم دارن تا مارو مثل لامپ روشن کنن:بوس:

elahe471
جمعه 20 اردیبهشت 1392, 19:17 عصر
بهتر اینه که یه جدول جدا برای سوالات بگیرید یه جدول دیگه برای گزینه ها که کلید جدول سوالات تو این جدول کلید خارجی باشه و یه جدول هم برای پاسخی که میدن اونجا هم باید کلید دو تا جدول قبلی رو بیارید و کلید جدول User

برای نمایششم از گرید ویو تو در تو میتونید استفاده کنید ، گرید بیرونی سوال گرید داخلی گزینه ها

mjt10063
جمعه 20 اردیبهشت 1392, 19:26 عصر
خیلی ممنون دوست عزیز خیلی روشن شدم
دمت گرم

mjt10063
شنبه 21 اردیبهشت 1392, 09:30 صبح
سلام

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

mjt10063
شنبه 21 اردیبهشت 1392, 13:07 عصر
دوستان خواهشن یکی گریدویو تو در تو
طوری که اطلاعات رو از دو جدول دریافت کنه
به این صورت
سوال 1 :(گرید 1)
گزینه 1 گزینه 2 گزینه 3 گزینه 4 :(گرید 2)

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

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

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

TeacherMath
شنبه 21 اردیبهشت 1392, 15:40 عصر
چرا از Repeater استفاده نمی کنید.

mjt10063
شنبه 21 اردیبهشت 1392, 15:46 عصر
اینی که گفتید چی هست تا حالا ازش استفاده نکردم میشه یه نمونه یا کد بزارید
که بشه سوالات رو به همراه جوابشون پشت هم بیاره

mohammad kafiyan
شنبه 21 اردیبهشت 1392, 16:45 عصر
دوست عزیز TeacherMath (http://barnamenevis.org/member.php?150212-TeacherMath) درست می گویند کافی این کنترل repeaterرا به صفحه اضافه کنی و برایش تعریف کنی و هر جوری که خواستی چیدمان عناصر را داخل آن قرار بدهی


<ItemTemplate>
...
</ItemTemplate>


http://www.w3schools.com/aspnet/aspnet_repeater.asp

mjt10063
شنبه 21 اردیبهشت 1392, 18:37 عصر
کلی گشتم تا تونستم این رو در بیارم
ولی بلد نیستم داده ها رو بهش بایند کنم
<asp:GridView ID="GridView1" runat="server" Width="100%" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="سوالات">
<ItemTemplate>
<table>
<tr>
<td><asp:Label ID="lbl_q" runat="server" Text=""></asp:Label></td>
</tr>
<tr>
<td>
<asp:GridView ID="Gridview2" runat="server" AutoGenerateColumns="false">
<Columns>

</Columns>
</asp:GridView>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
کد نویسی دستی


دوستان خواهشن کمک کنید
چطوری میتونم
این کار رو انجام بدم

سوال 1 :(گرید 1) از جدول سوال
گزینه 1 گزینه 2 گزینه 3 گزینه 4 :(گرید 2) از جدول گزینه ها

با تشکر

mjt10063
شنبه 21 اردیبهشت 1392, 20:27 عصر
دوستان یعنی هیچکس بلد نیست بهمون راهنمایی کنه

خیلی گیرم

mohammad kafiyan
شنبه 21 اردیبهشت 1392, 20:56 عصر
چرا دوست عزیز آنقدر خودت را عذاب می دیدی نگاهی انداختی به آن آدرسی که به شما داده بودم مثال آخرش را باز کن و طبق همان کارت را ادامه بده فقط در آن مثال header را که به صورت جدولی در نظر گرفته حذف کن . شما می تونی یک div برای سوال و یک div هم برای گزینه هات در نظر بگیری (استفاده از radiobuttonlist) در داخل repeater که البته در این مثال آخر از table استفاده کرده شما هم می تونی

mjt10063
شنبه 21 اردیبهشت 1392, 23:29 عصر
چرا دوست عزیز آنقدر خودت را عذاب می دیدی نگاهی انداختی به آن آدرسی که به شما داده بودم مثال آخرش را باز کن و طبق همان کارت را ادامه بده فقط در آن مثال header را که به صورت جدولی در نظر گرفته حذف کن . شما می تونی یک div برای سوال و یک div هم برای گزینه هات در نظر بگیری (استفاده از radiobuttonlist) در داخل repeater که البته در این مثال آخر از table استفاده کرده شما هم می تونی

دوست عزیز نگاه کردم ولی به زبان vb نوشته و من متوجه نمیشم
در ضمن من مثالش رو دیدم این که از دوتا جدول استفاده نکرده
من میخوام یه سطر از جدول شماره 1 باشه و یه سطر از جدول شماره 2
و همین طوری ادامه داشته باشه
تا سوال آخر

mjt10063
یک شنبه 22 اردیبهشت 1392, 12:30 عصر
به نتیجه نهایی رسیدم در پست زیرین

mjt10063
یک شنبه 22 اردیبهشت 1392, 15:33 عصر
بالاخره تونستم درستش کنم

میزارم واسه اونایی که مثل خود من باید خیلی بگردن تا بتونند به یه جوابی برسن

این کد تعریف ریپرتر

<asp:Repeater ID="Repeater1" runat="server">

<HeaderTemplate>
<table width="100%">
</HeaderTemplate>

<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "Q") %></td>
</tr>
<table width="100%">
<tr>
<td>
<asp:RadioButtonList ID="RadioBttL" runat="server">
<asp:ListItem Text="<%# DataBinder.Eval(Container.DataItem, "a1") %>"></asp:ListItem>
<asp:ListItem Text="<%# DataBinder.Eval(Container.DataItem, "a2") %>"></asp:ListItem>
<asp:ListItem Text="<%# DataBinder.Eval(Container.DataItem, "a3") %>"></asp:ListItem>
<asp:ListItem Text="<%# DataBinder.Eval(Container.DataItem, "a4") %>"></asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<%--<tr>
<td><%# DataBinder.Eval(Container.DataItem, "a1") %></td>
</tr>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "a2") %></td>
</tr>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "a3") %></td>
</tr>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "a4") %></td>
</tr>--%>
</table>
</ItemTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>




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


protected void Button3_Click(object sender, EventArgs e)
{
try
{
scon.Open();
string selgr = "select t_q.k_dars, t_q.id_q, t_q.Q, t_a.id_a, t_a.a1, t_a.a2, t_a.a3, t_a.a4 from t_q inner join t_a on t_q.id_q=t_a.id_q where t_q.k_dars =" + DropDownList1.SelectedValue;
SqlDataAdapter sda = new SqlDataAdapter(selgr, scon);
DataTable dt = new DataTable();
dt.Clear();
sda.Fill(dt);
Repeater1.DataSource = dt;
Repeater1.DataBind();
scon.Close();
}
catch (Exception err)
{
Response.Write("Error :" + err.Message);
}
finally
{
scon.Close();
}
}



و در آخر اینم کدی هست که سوالات رو به جدول مورد نظر ارسال میکنه


protected void Button4_Click(object sender, EventArgs e)
{
try
{
foreach (RepeaterItem Items in Repeater1.Items)
{
//معرفی کنترل های رپرتر
RadioButton r1 = (RadioButton)Items.FindControl("RadioButton1");
RadioButton r2 = (RadioButton)Items.FindControl("RadioButton2");
RadioButton r3 = (RadioButton)Items.FindControl("RadioButton3");
RadioButton r4 = (RadioButton)Items.FindControl("RadioButton4");
Label lbl_q = (Label)Items.FindControl("lbl_q");
Label lbl_a = (Label)Items.FindControl("lbl_a");
Label lbl_Kdars = (Label)Items.FindControl("lbl_kdars");

//تبدیل به متغیر عددی
int id_q = Int32.Parse(lbl_q.Text);
int id_a = Int32.Parse(lbl_a.Text);
int k_dars = Int32.Parse(lbl_Kdars.Text);

//تعیین گزینه انتخابی کاربر
if (r1.Checked == true)
{
pasokhsahihkarbar = "a1";
}
else if (r2.Checked == true)
{
pasokhsahihkarbar = "a2";
}
else if (r3.Checked == true)
{
pasokhsahihkarbar = "a3";
}
else if (r4.Checked == true)
{
pasokhsahihkarbar = "a4";
}

//ارسال به جدول پاسخ
scon.Open();
string instr = "insert into t_p (k_dars,id_q,id_a,user_name,a_true) values (@k_dars,@id_q,@id_a,@user_name,@a_true)";
SqlCommand scm = new SqlCommand(instr,scon);
scm.Parameters.Add("@k_dars",k_dars);
scm.Parameters.Add("@id_q",id_q);
scm.Parameters.Add("@id_a", id_a);
scm.Parameters.Add("@user_name",User.Identity.Name);
scm.Parameters.Add("@a_true",pasokhsahihkarbar);
scm.ExecuteNonQuery();
// Response.Write("سوالات ارسال شدند");
scon.Close();

}
}
catch (Exception err)
{
Response.Write("Error :" + err.Message);
}
finally
{
scon.Close();
}
}



با تشکر از همه دوستان
و مخصوصا سایت http://stackoverflow.com که واقعا من روشن شدم از اینکه باید چطوری کاری رو انجام بدم