PDA

View Full Version : نحوه دسترسی به ابزارهای داخل repeater



emilly
دوشنبه 29 تیر 1394, 23:19 عصر
سلام دوستان
فرض کنیم که ما توی ریپیترمون یه تکست باکس داریم وقتی ریپیتر اجربشه و داده هامون رواز دیتابیس فرخوانی کنه فرض کنیم ۲۰سطر بشه بعد این تکست باکس ها که داخل ریپیتره هم جلوی هر سطرتکرارمیشه یعنی ۲۰بار…………
من میخوام داده ای روکه کاربرمون واردهریک از تکست باکسها میکنه رو بایه فیلدازاون سطر رو بررسی کنم و درصورت صحت مقدارمربوطه به اون سطر رو وارد دیتابیس کنم …
مشکلم اینجاست که مقدارتکست باکس موبوطه به هرسطر رو چطوربررسی کنم آخه؟؟؟؟؟

راستی من باvb کارمیکنم.……

emilly
چهارشنبه 31 تیر 1394, 19:34 عصر
سلام دوستان

واقعاازاین همه اساتیدکسی نمیتونه راهنماییم کنه یاوقت ندارن؟؟؟!!

notlikeothers
چهارشنبه 31 تیر 1394, 19:39 عصر
درود یه سرچ سی ثانیه ای میکردین جواب میگرفتین خودتون

foreach(RepeaterItem item inRepeater1.Items)
{
TextBox txtName =(TextBox)item.FindControl("TextBox1");
if(txtName !=null)
{
string val = txtName.Text;
//do something with val
}
}

emilly
چهارشنبه 31 تیر 1394, 23:49 عصر
درود یه سرچ سی ثانیه ای میکردین جواب میگرفتین خودتون

foreach(RepeaterItem item inRepeater1.Items)
{
TextBox txtName =(TextBox)item.FindControl("TextBox1");
if(txtName !=null)
{
string val = txtName.Text;
//do something with val
}
}



سلام دوست عزیز
سرچ کردم همه کدهاروبا سی شارپ نوشتن نتونستم زیاد سردربیارم آخه من باvb.net کارمیکنم خیلی هم تلاش کردم که کدهاروبهvb.net تبدیل کنم اما نتونستم که نتونستم:عصبانی++:

emilly
پنج شنبه 01 مرداد 1394, 23:47 عصر
دوستان
کسی میتونه باvb راهنماییم کنه؟!؟!:ناراحت:

emilly
شنبه 03 مرداد 1394, 13:07 عصر
دوستان کسی نمیتونه با vbکمکم کنه

sun2rise
یک شنبه 04 مرداد 1394, 20:50 عصر
من سی شارپ نویس هستم ولی از طریق آدرس زیر میتونی کدهای سی شارپ رو تبدیل به vb.net بکنی
http://www.developerfusion.com/tools/convert/csharp-to-vb/?batchId=49189360-eeab-49bd-ad0e-15137e061746

emilly
دوشنبه 05 مرداد 1394, 19:30 عصر
درودبر اساتید عزیز

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

emilly
دوشنبه 05 مرداد 1394, 19:59 عصر
دوستان بعد از کلی گشتن توی وب این تکه کدها رو پیدا کردم ولی مقداری داخل myvarID و myvarText قرارداده نمیشه یا اینکه من نمیدونم میشه راهنماییم کنین لطفا:در این مثال هم از 4 تا ردیو باتن استفاده کرده و .....







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

<table cellpadding="5" cellspacing="2" border =" 0">
<tr><td style="width: 100px;" align ="center"><b><%#Container.DataItem("questions")%></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton1" Text='<%#DataBinder.Eval(Container.DataItem, "Answer_a")%>' runat="server" /></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton2" Text='<%#DataBinder.Eval(Container.DataItem, "Answe_b")%>' runat="server" /></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton3" Text='<%#DataBinder.Eval(Container.DataItem, "Answer_c")%>' runat="server" /></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton4" Text='<%#DataBinder.Eval(Container.DataItem, "Answer_d")%>' runat="server" /></td></tr>
<hr/>
</ItemTemplate>
</asp:Repeater>









For Each rep As RepeaterItem In Repeater1.Items
For Each ctrl As Control In rep.Controls
If ctrl.GetType Is GetType(RadioButton) Then
If DirectCast(ctrl, RadioButton).Checked = True Then
Dim myvarID As String = DirectCast(ctrl, RadioButton).ID
Dim myvarText As String = DirectCast(ctrl, RadioButton).Text
End If
End If
Next
Next

emilly
دوشنبه 05 مرداد 1394, 20:23 عصر
مثلا فرض, کنیم که ریپیتر ما ۲۰ بارتکرارمیشه میخوام ردیوباتن انتخابی هر یک از سطرهای ریپیترم داخل یه تکست باکس نمایش داده بشه ولی نمیشه یا من مبتدیم بلدنیستم.....
لطفا کمک:ناراحت:

emilly
سه شنبه 06 مرداد 1394, 19:33 عصر
به روز رسانی

emilly
چهارشنبه 07 مرداد 1394, 11:40 صبح
دوستان بعد از کلی گشتن توی وب این تکه کدها رو پیدا کردم ولی مقداری داخل myvarID و myvarText قرارداده نمیشه یا اینکه من نمیدونم میشه راهنماییم کنین لطفا:در این مثال هم از 4 تا ردیو باتن استفاده کرده و .....







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

<table cellpadding="5" cellspacing="2" border =" 0">
<tr><td style="width: 100px;" align ="center"><b><%#Container.DataItem("questions")%></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton1" Text='<%#DataBinder.Eval(Container.DataItem, "Answer_a")%>' runat="server" /></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton2" Text='<%#DataBinder.Eval(Container.DataItem, "Answe_b")%>' runat="server" /></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton3" Text='<%#DataBinder.Eval(Container.DataItem, "Answer_c")%>' runat="server" /></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton4" Text='<%#DataBinder.Eval(Container.DataItem, "Answer_d")%>' runat="server" /></td></tr>
<hr/>
</ItemTemplate>
</asp:Repeater>









For Each rep As RepeaterItem In Repeater1.Items
For Each ctrl As Control In rep.Controls
If ctrl.GetType Is GetType(RadioButton) Then
If DirectCast(ctrl, RadioButton).Checked = True Then
Dim myvarID As String = DirectCast(ctrl, RadioButton).ID
Dim myvarText As String = DirectCast(ctrl, RadioButton).Text
End If
End If
Next
Next





دوستان کسی نیست درمورد اجرا و ایراد این کدها راهنماییم کنه:گریه:

emilly
پنج شنبه 08 مرداد 1394, 16:05 عصر
دوستان واقعا کسی یه نیم نگاهی هم نکرد ..........................

emilly
پنج شنبه 08 مرداد 1394, 16:59 عصر
سلام




Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For Each rep As RepeaterItem In Repeater1.Items
For Each ctrl As Control In rep.Controls
If ctrl.GetType Is GetType(RadioButton) Then
If DirectCast(ctrl, RadioButton).Checked = True Then
Dim myvarID As String = DirectCast(ctrl, RadioButton).ID
Dim myvarText As String = DirectCast(ctrl, RadioButton).Text


rep.FindControl("textbox1") = myvarText


End If
End If
Next
Next
End Sub





چطور مقدار myvarText و myvarID را داخل یه تکست باکس نشون بدم اون یه خط رو اضافه کردم ولی جواب نگرفتم .:افسرده:

mamali92
پنج شنبه 08 مرداد 1394, 17:40 عصر
با سلام
ابزاری مثل ریپیتر یا گریدویو امکان اینو به ما میدن که بتونیم ابزار دیگه مثل لیبل یا تکست باکس رو داخلش قرار بدیم اما این مشکل کوچولو داره، اونم اینه که بصورت مستقیم نیمشه بهش اشاره کرد و باید از طریق متد FindControl اون ابزار رو پیدا کنی که این خودش یه مشکل جدید رو به وجود میاره، اونم اینه که میتونی ازش مقدار بخونی اما نمی تونی بهش مقدار وارد کنی و این متد هم یه ورودی بیشتر نداره که اونم واسه وارد کردن نام کنترلت هست.
برای حل این مشکل میشه به جای استفاده از ابزاری مثل ریپیتر بیای و دستی این کارو بکنی. یعنی از حلقه ای مثل while استفاده کنی.
من سی شارپ بلدم و از "وی بی" چیزی نمی دونم اگه بخوای می تونم کدهای سی شارپ رو واست بزارم، شاید بتونه کمکت کنه

emilly
پنج شنبه 08 مرداد 1394, 18:33 عصر
با سلام
ابزاری مثل ریپیتر یا گریدویو امکان اینو به ما میدن که بتونیم ابزار دیگه مثل لیبل یا تکست باکس رو داخلش قرار بدیم اما این مشکل کوچولو داره، اونم اینه که بصورت مستقیم نیمشه بهش اشاره کرد و باید از طریق متد FindControl اون ابزار رو پیدا کنی که این خودش یه مشکل جدید رو به وجود میاره، اونم اینه که میتونی ازش مقدار بخونی اما نمی تونی بهش مقدار وارد کنی و این متد هم یه ورودی بیشتر نداره که اونم واسه وارد کردن نام کنترلت هست.
برای حل این مشکل میشه به جای استفاده از ابزاری مثل ریپیتر بیای و دستی این کارو بکنی. یعنی از حلقه ای مثل while استفاده کنی.
من سی شارپ بلدم و از "وی بی" چیزی نمی دونم اگه بخوای می تونم کدهای سی شارپ رو واست بزارم، شاید بتونه کمکت کنه



خیلی ممنون میشم دوست عزیز

پس اونوقت اگه من بخوام مثلا ردیو باتنی که توسط کاربرم انتخاب شده رو نشون بدم هیچ راه حلی وجود نداره ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
مقادیر انتخابیم داخل myvarText و myvarID به درستی قرار میگیرین فقط مشکلم اینه که اونا رو چطور به کاربرم زیر هرگزینه نشون بدم که از 4 گزینه کدوم رو انتخاب کرده واقعا دارم گیج میزنم دیگه:اشتباه::اشتباه::اشتباه:

mamali92
پنج شنبه 08 مرداد 1394, 19:11 عصر
من یه سیری کد نمونه که تویه یکی از پروژه هام کار کردم، برات میزارم که می تونی جایگزین ابزاری مثل ریپیتر کنی اما سی شارپه.
اگه می تونی کد رو که داری رو دقیقا قرار بده اینجا، اگه بتونم خوشحال میشم یه کمکی بهت بکنم


<div style="padding-left:5px;font-family:'B nazanin','Tahoma';font-size:16px;" id="content">
<div id="content_inner">
<!-- end intro -->
<!-- end sidebar_right -->
<ul id="slides1">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"></asp:SqlDataSource>
<% System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(SqlDataSource1 .ConnectionString);
string commandText = "SELECT TOP " + SlideCount + " * FROM KCP_Content WHERE Publish = 'True' AND Category LIKE N'اسلاید' Order By CreatedDate DESC ";
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(commandText, con);
con.Open();
System.Data.SqlClient.SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string ur = dr["IndexPic"].ToString();
ur= ur.Replace("~/", "");
%>
<li>
<img src='<% Response.Write(ur); %>' width="209" height="209" alt="بدون نصویر" />
<div class="content">
<h3 style="font-family:'B Titr','Tahoma';"><% Response.Write(dr["Title"].ToString()); %></h3>
<h4 style="font-family:'B Nazanin','Tahoma';"><% Response.Write(dr["IntroText"].ToString()); %></h4>
<p style="font-family:'B Nazanin','Tahoma';"><% Response.Write(dr["FullText"].ToString()); %></p>

</div>
<div class="clear"></div>
</li>
<% } con.Close(); dr.Close(); %>
</ul>
</div>
</div>

این یه نمونه کده که یه سری مطلب رو از بانک می خونه و داخل اسلاید شو به نمایش می زاره. اینارو باید داخل خود صفحه aspx قرار میدی
[/CSHARP]
<% Response.Write(dr["FullText"].ToString()); %>


این کد به سی شارپه اما چون داخل این تگ
<% %> قرار گرفته قابلیت اجرایی در سمت سرور رو پیدا می کنه و با متد Response.Write() میشه هر مقداری که مد نظرت هست رو وارد خاصیت Text هر کنترلی که می خوای بکنی و همین طور چون ابزاری مثل لیبل یا نکست باکس داخل هیچ ابزار دیگه ای مانند ریپیتر نیست، میشه بعدا مستقیما بهش مقدار داد یا ازش مقدار خوند.
مثل کد زیر:

[CSHARP]
<asp:Label ID="Label2" runat="server" Text=' <%# KCP.KCP_Class.mm(Eval("CreatedDate")+"") %>' ></asp:Label>





بازم اگه سوال داری هستم در خدمتت

emilly
پنج شنبه 08 مرداد 1394, 20:15 عصر
سلام دوست عزیز
این کدهام هستش ....................




<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="test_repeater.WebForm1" %>


<!DOCTYPE html>


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT * FROM [v1]"></asp:SqlDataSource>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate >

<table >
<td><%#Eval("matn")%> </td>
<tr><td> <asp:RadioButton ID="RadioButton1" Text='<%#DataBinder.Eval(Container.DataItem, "g1")%>' runat="server" name="1"/></td></tr>
<tr><td> <asp:RadioButton ID="RadioButton2" Text='<%#DataBinder.Eval(Container.DataItem, "g2")%>' runat="server" name="1"/></td></tr>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
</asp:Repeater>
</div>

<asp:Button ID="Button1" runat="server" Text="Button" />




</form>
</body>
</html>






Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For Each rep As RepeaterItem In Repeater1.Items
For Each ctrl As Control In rep.Controls
If ctrl.GetType Is GetType(RadioButton) Then
If DirectCast(ctrl, RadioButton).Checked = True Then
Dim myvarID As String = DirectCast(ctrl, RadioButton).ID
Dim myvarText As String = DirectCast(ctrl, RadioButton).Text


End If
End If
Next
Next



End Sub




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

emilly
پنج شنبه 08 مرداد 1394, 20:20 عصر
اینم کد شما که به وی بی نوشتم :
البته اون چیزهایی رو که نیاز داشتمشون رو با اجازه تون گذاشتم ................





<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication9.WebForm1" %>


<!DOCTYPE html>


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="padding-left: 5px; font-family: 'B nazanin','Tahoma'; font-size: 16px;" id="content">
<div id="content_inner">
<!-- end intro -->
<!-- end sidebar_right -->
<ul id="slides1">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT [matn], [g1], [g2] FROM [v1]"></asp:SqlDataSource>
<% Dim con As New System.Data.SqlClient.SqlConnection(SqlDataSource1 .ConnectionString)
Dim commandText As String = "SELECT [matn], [g1], [g2] FROM [v1] "
Dim cmd As New System.Data.SqlClient.SqlCommand(commandText, con)
con.Open()
Dim dr As System.Data.SqlClient.SqlDataReader = cmd.ExecuteReader()
While dr.Read()

Dim ur As String = dr("matn").ToString()
ur = ur.Replace("~/", "")


%>
<li>
<div class="content">
<h3 style="font-family: 'B Titr','Tahoma';"><% Response.Write(dr("matn").ToString())%></h3>
<asp:RadioButton ID="RadioButton1" runat="server" name="1" /><% Response.Write(dr("g1").ToString())%>
<asp:RadioButton ID="RadioButton2" runat="server" name="1" /><% Response.Write(dr("g2").ToString())%>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>


</div>
<div class="clear"></div>
</li>
<% End While%>
</ul>
</div>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>









Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If RadioButton1.Checked Then
Label1.Text = "ok"
End If
End Sub





توی این کد مشکل نماش گزینه انتخابی وجود نداره ولی این ردیو باتن هایی رو که من میذارم و ممکنه که این جفت ردیو باتن 100 بار تکرار بشه مشکل اینجاست که به صورت مستقل نیستن یعنی با انتخاب گزینه 1 در آیتم 1 وقتی ما دوباره گزینه 1 رو تو آیتم 2 یا .. انتخاب میکنیم همه چیز بهم میرزه ووقتی که میگم وقتی گزینه 1 انتخاب شد Ok رو نشون بده تو همه لیبل ها نشون میده و ............

mamali92
پنج شنبه 08 مرداد 1394, 20:44 عصر
اونی که من می بینیم شما دو مشکل دارید.
اول اینکه به لیبل نمیشه مقدار داد چون اصلا نمیشه بصورت مستقیم فراخوانی کرد. دوم اینکه شما در قسمت کد نویسی یا همون سمت سرور دو رادیو باتن طراحی کردین اما در قسمت اجرا یا همون کلاینت شما از هر رادیوباتن ممکنه بیشتر از یکی داشته باشین.
سوالی که پیش میاد اینه که در قسمت کلیک دکمه تون که نوشتین If RadioButton1.Checked Then منظورتون دقیقا کدوم رادیو باتن هست. ماله رکورد اوله یا دوم؟ اینجاست که asp گیج میشه و نمی فهمه منظورتون کدومه و جالب تر اینکه اگه در خروجی با کلیک راست زوی گزینه view page source رو انتخاب کنی می بینی رادیوباتن ها هر کدومش اسمی دارن، اما اینها در واقع در سمت سرور وجود ندارن و فقط یکی وجود داره.
من قبلا تویه یکی از پروژه هام با همین مشکل مواجه شدم که می خواستم هر رکوردی یه رادیو باتن داشته باشه که کاربر با انتخابش بتونه عملیاتی مثل حذف رو انجام بده که با Grid view حلش کردم.
این مشکل اگه بشه حلش کرد بهترین روشش همون گرید ویو هست و با اون روش اول که گفتم، با حلقه while نمیشه بر طرفش کرد.
اگه کمی زمان بدی پیداش می کنم و واست نمونه کدش رو می زارم. شاید امروز نشه اما تا فردا برات میزارم.

emilly
پنج شنبه 08 مرداد 1394, 21:02 عصر
پروژه ای که من دارم روش کار میکنم چیزی شبیه آزمون آنلاین هستش ....................



تشکرات فراوان دوست عزیز

mamali92
شنبه 10 مرداد 1394, 02:16 صبح
سلام دوست عزیز؛
تقریبا چیزی رو که خواسته بودی انجام دادم اما با کمی تفاوت.
قبل اینکه برنامه رو توضیح بدم اول بریم سراغ ایده شما و اشکالاتش که مجبور شدم تغییرش بدم تا بشه انجامش داد
شما می خوای تویه هر رکورد دو تا رادیوباتن داشته باشی. این یعنی اینکه باید از RadioButtonList استفاده کنی نه از چند تا RadioButton

RadioButtonList از لحاظ ماهیتی شبیه DropDownList هست و فقط از نظر ظاهر متفاوته. اگه می خوای راجع به این کنترل اطلاعات بیشتری داشته باشی تویه نت یکم جستجو کن مطالب زیادی بدست میاری

اشکال بعدی که وجود داره اینه که دکمه ای که قرار دادی بیرون از مجموعه ای مثل ریپیتر هست و این کارو پیچیده می کنه که تویه پست شماره 20 گفتم و تازه با فرض اینکه بشه این مشکل رو حل کرد به مشکل بزرگتر بر می خوریم و اونم اینه که به لیبل داخل ریپیتر مستقیما نمیشه مقدار داد.
این مشکل راجع به همه ابزارهایی مثل ریپیتر وجود داره به جز یه کنترل و اونم DetailsView هست که امکان اینو میده تا بتونم کنترل داخلش رو مقدار دهی کنیم.

پس میشه برای حل این مشکل این کارو کرد که با Gridview رکوردها رو لیست کنیم، بعد زیر Gridview یه DetailsView بزاریم تا با انتخاب هر رکورد این کنترل محتویات رکورد مورد نظر رو نشون بده هر کارهایی رو که می خوای روش انجام بدی.
من کد ها رو اینجا با کمی توضیح می زارم و در آخر فایل پروژه رو هم برات آبلود می کنم

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

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT * FROM [tbl_Test]" ></asp:SqlDataSource>


بعد یه Gridview می سازیم و به SqlDataSource متصلش می کنیم:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
CellPadding="4" ForeColor="#333333" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField SelectText="نمایش این سوال" ShowSelectButton="True" >
<ItemStyle BackColor="#D0F6A0" />
</asp:CommandField>
<asp:BoundField DataField="article" HeaderText="article" ItemStyle-Width="180" />
</Columns>
</asp:GridView>


حالا باید کنترل DetailsView بزاریم ولی قبلش یه SqlDataSource برای این کنترل می سازیم:

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT * FROM [tbl_Test] WHERE [id] = @id"
updatecommand="UPDATE [tbl_Test] SET [g3] = @g3 WHERE [id] = @id">
<UpdateParameters>
<asp:Parameter Name="id"></asp:Parameter>
<asp:Parameter Name="g3"></asp:Parameter>
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter Name="id" ControlID="GridView1" PropertyName="SelectedValue"></asp:ControlParameter>
</SelectParameters>
</asp:SqlDataSource>




<asp:DetailsView ID="DetailsView1" Height="50px" Width="125px" runat="server" DataKeyNames="id"
DataSourceID="SqlDataSource2" autogeneraterows="False"
GridLines="None" onitemupdated="DetailsView1_ItemUpdated">
<Fields>
<asp:BoundField ReadOnly="true" HeaderText="متن" InsertVisible="False" DataField="article"></asp:BoundField>
<asp:TemplateField HeaderText="گزینه ها">
<ItemTemplate>
<asp:BulletedList runat="server" DataSourceID="SqlDataSource2" DataTextField="g1" />
<asp:BulletedList runat="server" DataSourceID="SqlDataSource2" DataTextField="g2" />
</ItemTemplate>
<EditItemTemplate>
<asp:RadioButtonList ID="RadioButtonList1" runat="server" >
<asp:ListItem Value="1" Text="گزینه اول" />
<asp:ListItem Value="2" Text="گزینه دوم" />
</asp:RadioButtonList>
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" EditText="پاسخ دادن به سوال"
UpdateText="ثبت سوال" CancelText="لغو"></asp:CommandField>
</Fields>
</asp:DetailsView>


حالا توبت نوشتن کد برای تغییر لیبل با استفاده از دکمه است که من اینجا از یه LinkButton استفاده کردم ولی شما با هر دکمه دیگه ای دوست داشتی می تونی همین کارو بکنی:



protected void LinkButton1_Click(object sender, EventArgs e)
{
RadioButtonList rdl = (RadioButtonList)DetailsView1.FindControl("RadioButtonList1");
Label lbl = (Label)DetailsView1.FindControl("Label1");

if (rdl.SelectedValue == "1")
{
lbl.Text = "گزینه اول ثبت شد";
}
else if (rdl.SelectedValue == "2")
{
lbl.Text = "گزینه دوم ثبت شد";
}
}


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

mamali92
شنبه 10 مرداد 1394, 02:36 صبح
فایل ضمیمه شد

emilly
شنبه 10 مرداد 1394, 16:56 عصر
سلام دوست عزیز

باید بگم توضیحاتتون واقعا کامل کامل کامل بو د خیلی ممنون
عالی بود ...........:تشویق:


فقط یه سوال س کیو ال شما ورژن چنده؟؟؟؟؟؟؟؟؟؟
اس کیو ال من 2012 هستش نمی تونه فایل های اس کیو ال شما رو اتچ کنه :متفکر:

emilly
شنبه 10 مرداد 1394, 19:16 عصر
پروژه ای که من دارم روش کار میکنم چیزی شبیه آزمون آنلاین هستش ....................



تشکرات فراوان دوست عزیز




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

پروژه شما واسه اجرا خیلی زمان میبره .......... ولی خیلی جالبه .....
به خاطر تشکر از توجه شما هم که شده آخر سر فایل رو میزارم البته اگه بتونم تکمیلش کنم :لبخند:

mamali92
شنبه 10 مرداد 1394, 20:26 عصر
آره یکم زمان بر هست ولی خب هرچی فکر کردم این تنها راه حلی بود به ذهنم رسید.
اگه تکمیلش کردین حتما خوشحال میشم ببینم. مسلما چیزای زیادی برای یادگرفتن باید داشته باشه