PDA

View Full Version : Eval چیست



Leyla2011
یک شنبه 13 فروردین 1391, 17:31 عصر
با سلام به دوستانم
کسی میدونه کد زیر چه کاری انجام میده؟
OnClientClick='<%# Eval("kala_code", "SelectKala(\"{0}\")") %>'

p.yazdkhasti
یک شنبه 13 فروردین 1391, 18:02 عصر
سلام
Eval در ASP.NET وظیفه بایند کردن(Binding) به DataItem موجود در Containter را دارد. با مشخص کردن Datasource برای کنترل هایی مانند GridView یا Repeater هر یک از سطر های موجود در Datasource تحت عنوان Container.DataItem در Template های مربوط به آن ها قابل استفاده است. Eval دارای دو Overload است که یکی از آن ها به عنوان پارامتر اول نام Property و در پارامتر دوم نحوه فرمت کردن مقدار Property بعد از Resolve شدن را دریافت می کند. به عبارت دیگر Eval در کد بالا ابتدا به دنبال پارامتر "Kala_code" در DataItem می گردد و بعد از تبدیل کردن آن به String، توسط پارامتر دوم آن را فرمت می کند (مانند String.Format).

Leyla2011
یک شنبه 13 فروردین 1391, 18:36 عصر
یه سوال دیگه

این تابع eval برای component های html قابل استفاده است یا محدودیتی نداره و برای component های استاندارد(asp) هم قابل استفاده است؟

hamid_shrk
یک شنبه 13 فروردین 1391, 18:42 عصر
دوست عزیز کنترل های asp همون تگ های html هستند ،موقع اجرا مرورگر رو view source کنید متوجه میشید.
بنابراین هیچ فرق و محدودیتی در استفاده از Eval وجود نداره براشون.

Leyla2011
یک شنبه 13 فروردین 1391, 18:57 عصر
ممنونم hamid_shrk (http://barnamenevis.org/member.php?99278-hamid_shrk)
اما فرض کن 2 تا فرم به نامهای form1,form2 داریم
در فرم1 یه تکست باکس دارم و در فرم 2 یه dropdownlist
بعد از دیتابیس نامها را در dropdownlist نشان میدم تا اینجا مشکلی نیست اما میخوام با انتخاب هر نامی id آن در تکست باکس فرم 1 نمایش داده بشه
وقتی از تابع eval استفاده میکنم و ورودی میدم خطا میده

dorparasti
یک شنبه 13 فروردین 1391, 19:30 عصر
کنترلی که می خواید از eval در اون استفاده کنید باید به یک منبعی bind باشه . نمیتونید به هر کنترلی که توی صفحه قرار داره همینطوری Eval بدید . و مقدار فراخوانی شده هم در اون منبع باشه .

متن خطا چیه ؟

Leyla2011
یک شنبه 13 فروردین 1391, 19:47 عصر
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="ObjectDataSource1" DataTextField="CodeOwnership"
DataValueField="Id" Onkeypress='<%# Eval("Id", "funddl1(\"{0}\")") %>' >
</asp:DropDownList>
این هم تابع:
function funddl1(Id) {
debugger
window.returnValue = Id;
window.close();
}

یک ObjectDataSource1 را هم به dropdownlist ، بایند کردم
این هم خطا:
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

hamid_shrk
یک شنبه 13 فروردین 1391, 20:45 عصر
ممنونم hamid_shrk (http://barnamenevis.org/member.php?99278-hamid_shrk)
اما فرض کن 2 تا فرم به نامهای form1,form2 داریم
در فرم1 یه تکست باکس دارم و در فرم 2 یه dropdownlist
بعد از دیتابیس نامها را در dropdownlist نشان میدم تا اینجا مشکلی نیست اما میخوام با انتخاب هر نامی id آن در تکست باکس فرم 1 نمایش داده بشه
وقتی از تابع eval استفاده میکنم و ورودی میدم خطا میده

Eval رو که همینجوری نباید بکار ببرید.
چه کدی نوشتید؟
کدتون رو بذارید.
پست دوم همین تاپیک دوستمون کتمل توضیح دادن موارد استفاده رو

Leyla2011
دوشنبه 14 فروردین 1391, 19:54 عصر
سلام دوستان

کسی میتونه این کار را انجام بده
فرض کن 2 تا فرم به نامهای form1,form2 داریم
در فرم1 یه تکست باکس دارم و در فرم 2 یه dropdownlist
بعد از دیتابیس نامها را در dropdownlist نشان میدم تا اینجا مشکلی نیست اما میخوام با انتخاب هر نامی id آن در تکست باکس فرم 1 نمایش داده بشه

کمک بزرگی بهم میکنید اگه جواب بدین

hamid_shrk
دوشنبه 14 فروردین 1391, 20:09 عصر
شما موقع بایند کردن باید id رو به value دراپ دانتون بایند کنید و تو رویداد SelectedIndexChanged این کد رو بنویسید :

textbox1.Text = DropDownList1.SelectedItem.Value;

سپس EnableAutopostBack رو هم برای دراپ دانتو true کنید

Leyla2011
دوشنبه 14 فروردین 1391, 20:54 عصر
دوست عزيز من دقيقا همين کار رو ميکنم اما ايراد از اين قسمت نيست از ورودي تابع eval است

کسي ميتونه اين برنامه رو بنويسه خواهشا، ببينيم ميشه اصلا همچين کاري کرد يا نه؟

hamid_shrk
دوشنبه 14 فروردین 1391, 21:01 عصر
تو این کد دیگه نیازی به Eval و رویداد onkeyPress نیست واسه کدی که من گذاشتم براتون :


<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
DataSourceID="ObjectDataSource1" DataTextField="CodeOwnership"
DataValueField="Id" Onkeypress='<%# Eval("Id", "funddl1(\"{0}\")") %>' >
</asp:DropDownList>

Leyla2011
دوشنبه 14 فروردین 1391, 21:24 عصر
درسته ولی من نمیخوام id در text box مربوط به همون فرم وارد بشه

با استفاده از کد بالا و تابع
function funddl1(Id) {
debugger
window.returnValue = Id;
window.close();
}
id را برمیگردونم به textbox فرم مورد نظر که خطا میده

keiv@n
چهارشنبه 21 تیر 1391, 22:38 عصر
با سلام

دارم روانی میشم کسی میدونه مشکل کد منو؟ چرا l1 در خروجی نمایش داده نمیشه؟


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="rptList" runat="server" DataSourceID="SqlDataSource1" >
<HeaderTemplate>
<table>
<tr>
<li>
<asp:Label ID="l1" Text='<%#Eval("ISBN")%>' runat="server"></asp:Label>
</li><th>
<asp:Label ID="Label1" Text="First Name" runat="server"></asp:Label>
</th>
<th>
<asp:Label ID="Label2" Text="Last Name" runat="server"></asp:Label>
</th>
<th>
<asp:Label ID="Label3" Text="Date Added" runat="server"></asp:Label>
</th>
<th>
<asp:Label ID="Label6" Text="Delete" runat="server"></asp:Label>
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label ID="l1" Text="aaaaaaaa" runat="server"></asp:Label>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:BooksConnectionString %>"
ProviderName="<%$ ConnectionStrings:BooksConnectionString.ProviderNa me %>"
SelectCommand="SELECT * FROM [AuthorISBN]"
InsertCommand="INSERT INTO [AuthorISBN] ([ISBN], [authorID]) VALUES (?, ?)">
<InsertParameters>
<asp:Parameter Name="ISBN" Type="String" />
<asp:Parameter Name="authorID" Type="Int32" />
</InsertParameters>
</asp:SqlDataSource>
<div>
</div>
<asp:FileUpload ID="FileUpload1" runat="server" />
</form>
</body>
</html>

saeed_pb
دوشنبه 10 شهریور 1393, 10:24 صبح
سلام دوستان
یک سوال داشتم ، کمکم کنید لطفا"

این کد نمایش تصویر من توی DataList هست :

ImageUrl='<%# Eval("Name","~/Gallary/Animal/{0}") %>'
میخواهم همانطور که نام عکس را از دیتابیس می گیره ، بجای Animal هم از lable در فرمم مقدار بگیره .

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