PDA

View Full Version : سوال: بایند یک متغییر به یک فیلد



Feremerz
پنج شنبه 12 آذر 1388, 18:39 عصر
سلام
با چه متدی میشه برای مثال یک متغییر رشته ای رو در قسمت طراحی به یک فیلد بایند کرد؟

با متد Eval میشه اون فیلد رو نمایش داد اما نمیشه اون رو داخل متغییر ریخت یا اینکه مقدار اون رو با چیزی مقایسه کرد


<asp:Label ID="Label" runat="server"
Text='<%# Eval("title") %>' />متدی به نام Bind وجود داره که ظاهرا این کار رو انجام میده
اما نمیدونم چطور باید ازش استفاده کرد
من میخوام در قسمت Itemtemplate شیء Datalist چک کنم اگر مثلا فیلد test برابر True است این Button نمایش داده بشه .
Datalist به SqlDataSource وصله و در دستور Select کلیه فیلد ها فراخوانی شدن


<% if ((test == true) )
{ %>

<asp:Button ID="btn" runat="server"
Font-Names="tahoma"
Font-Size="9pt" />

<%} %>

A.S.Roma
جمعه 13 آذر 1388, 13:13 عصر
متونید در رویداد DataBinding دکمتون شرط رو چک کنید .

Feremerz
جمعه 13 آذر 1388, 14:35 عصر
متونید در رویداد DataBinding دکمتون شرط رو چک کنید .

ممنون از اینکه جواب دادی اما اصلا باتن به فیلدی بایند نیست
من باتن رو مثال زدم
فرض کنید یه متن به جای اون باتن هست

من میخوام توی Datalist با یه متد به یه فیلد دسترسی پیدا کنم مثلا:


<% if ((Bind("Test") == true) )
{ %>

این یک تست است
<%} %>




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

Mostafa_Dindar
شنبه 14 آذر 1388, 00:25 صبح
بايد در رويداد ItemDateBound كنترلDataList اين كار رو بكنيد :
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label lblInsertDate = (Label)e.Item.FindControl("lblInsertDate");
if (lblInsertDate.Text != "Something")
{
//Do some thing
}
else
{
//Do some thing else
}
}
}

در صورتي كه از GridView استفاده ميكنيد و ميخواهيد اينكار رو انجام بديد در رويداد RowDataBind

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[3].Text != null)
{
e.Row.Cells[3].Text = Utility.FarsiCalendar.ToPersianDate(e.Row.Cells[3].Text);
}
}
}

موفق باشيد

Feremerz
شنبه 14 آذر 1388, 02:02 صبح
بايد در رويداد ItemDateBound كنترلDataList اين كار رو بكنيد :
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label lblInsertDate = (Label)e.Item.FindControl("lblInsertDate");
if (lblInsertDate.Text != "Something")
{
//Do some thing
}
else
{
//Do some thing else
}
}
}

در صورتي كه از GridView استفاده ميكنيد و ميخواهيد اينكار رو انجام بديد در رويداد RowDataBind

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[3].Text != null)
{
e.Row.Cells[3].Text = Utility.FarsiCalendar.ToPersianDate(e.Row.Cells[3].Text);
}
}
}

موفق باشيد

ممنون دوست عزیز

اما من داخل تگ های HTML میخوام چک کنم نه توی محیط کد نویسی

مثلا اینطوری:


<td >

<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<% if ((Bind("Test") == true) )
{ %>

این یک تست است
<%} %>
</ItemTemplate>
</asp:DataList>
</td>

Mostafa_Dindar
شنبه 14 آذر 1388, 08:37 صبح
اينطور امتحان كن :

<asp:DataList runat="server">
<ItemTemplate>
<%# GetText(Container.DataItem) %>
</ItemTemplate>
</asp:DataList>

و در CodeBehind

protected static string GetText(object dataItem)
{
if (Convert.ToBoolean(DataBinder.Eval(dataItem, "Deleted"))
return "Deleted";

return "Not Deleted";
}

Feremerz
شنبه 14 آذر 1388, 12:47 عصر
خواهش ميشه ولي اگه از دكمه تشكر استفاده كنيد ديگه لازم نيست پست بدين .
موفق باشيد.

شرمنده

آقا فقط یه چیز دیگه
میتونید بگید databinder.eval با eval چه فرقی داره

من باید چی به متد پاس کنم؟ مقدار مورد نظرم رو پاس کنم تا با فیلد Delete مقایسه بشه؟
حالا اون فیلد که داخل Datalist مثلا به یه Label بایند هست چجوری بهش دسترسی پیدا کنم که به این تابع پاس کنم؟

با FindControl نمیشه این کارو کرد؟

Feremerz
شنبه 14 آذر 1388, 13:00 عصر
مشکلم هنوز پا بر جاست

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

مثلا :



<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<asp:HiddenField ID="pcode" runat="server"
Value='<%# Eval("pcode") %>' />
</ItemTemplate>

</asp:DataList>




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

این کد کار نمیکنه:



string s = ((HiddenField)DataList1.FindControl("HiddenField1")).Value;