PDA

View Full Version : سوال: دریافت یک فیلد از ریپتر



fozolefozola
پنج شنبه 21 اردیبهشت 1391, 18:45 عصر
با سلام

من می خوام آی دی مطلبم و از ریپیتر دریافت کنم

این کد رو تو ASP.net نوشتم


<asp:Repeater ID="RepSubject" runat="server"
onitemdatabound="RepSubject_ItemDataBound">
<ItemTemplate>

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("IdSubject","page.aspx?sub={0}")+Eval("IdCategory","&cat={0}")+Eval("title","&title={0}") %>' Text='<%#Eval("title") %>' Font-Underline="False" ToolTip='<%#Eval("title") %>'></asp:HyperLink>

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

</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>


و می دونم که باید در ایونت ItemDataBound کد بنویسم
ولی نمی دونم چطور آی دی مطلب و بگیرم



protected void RepSubject_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;

}

bftarane
پنج شنبه 21 اردیبهشت 1391, 21:16 عصر
با توجه به اين لينک http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.a spx
فکر مي کنم به اين شکل ميشه نوشت:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

int id = (ConvertToInt32(e.Item.DataItem)).IdSubject;

}
من فرض کردم IdSubject از نوع int باشه.

fozolefozola
پنج شنبه 21 اردیبهشت 1391, 23:44 عصر
با توجه به اين لينک http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.a spx
فکر مي کنم به اين شکل ميشه نوشت:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

int id = (ConvertToInt32(e.Item.DataItem)).IdSubject;

}
من فرض کردم IdSubject از نوع int باشه.

با سلام
بله IdSubject از نوع int است

من کد رو به کار بردم ولی از ConvertToInt32 اشکال میگیره

bftarane
جمعه 22 اردیبهشت 1391, 09:22 صبح
چه Error اي ميده؟

bftarane
جمعه 22 اردیبهشت 1391, 11:24 صبح
يه نقطه جا افتاده
Convert.ToInt32
ولي من به کدي که بالا نوشتم شک کردم. حالا يه خورده تحقيق مي کنم اگه نتيجه گرفتم قرار مي دم. شما هم اگه به نتيجه رسيديد اطلاع بديد.

دوستان حرفه اي لطفاً راهنمايي کنيد.

bftarane
جمعه 22 اردیبهشت 1391, 13:53 عصر
يه فايل ضميمه مي کنم که توش از اين کد استفاده کردم

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv =(DataRowView)(e.Item.DataItem);
int id = Convert.ToInt32(drv.Row["IdSubject"]);

ببينيد به کارتون مياد؟

fozolefozola
شنبه 23 اردیبهشت 1391, 01:20 صبح
ممنون مشکل حل شد
خیلی ممنون

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


RepeaterItem item = e.Item;

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

DataRowView drv = (DataRowView)(item.DataItem);
int id = Convert.ToInt32(drv.Row["IdSubject"]);
Repeater Repch = (Repeater)item.FindControl("Repch");

string s2 = @"SELECT Subject.Id AS Expr1, Subject.Id AS Expr3, Label.Confirmation
FROM Label INNER JOIN
ListLable ON Label.Id = ListLable.IdLablel INNER JOIN
Subject ON ListLable.IdSubject = Subject.Id
WHERE (Subject.Id = "+id+")";

SqlDataAdapter sda2 = new SqlDataAdapter(s2, con);
sda2.SelectCommand.CommandType = CommandType.Text;
DataSet ds2 = new DataSet();
sda2.Fill(ds2, s2);

this.Repch.DataSource = ds2.Tables[s2];
this.Repch.DataBind();
}

bftarane
شنبه 23 اردیبهشت 1391, 10:38 صبح
this.Repch.DataSource = ds2.Tables[s2]; this.Repch.DataBind();

اون this ها رو من برداشتم ريپيتر دومي رو شناخت.

fozolefozola
یک شنبه 24 اردیبهشت 1391, 01:20 صبح
لطف بزرگی کردین سه ماه بود دنبال این قضیه بودم ممنون که وقت گذاشتین