PDA

View Full Version : مشکل با update panel و Drpdown list



mamad_za
دوشنبه 10 آذر 1393, 23:45 عصر
سلام دوستان من یه صفحه گالری درست کردم که عکس ها رو توش لود می کنه
شیوه کار به این شکل هست که ما گروه بندی داریم وقتی رو هر گروه که کلیک می کنیم عکس های اون گروه رو لود می کنه که با Update panel به صورت ajax این کار رو دارم انجام میدم . گروه ها تویه dropdownlist ریخته شده . الان مشکل اینه که وقتی روی گروه ها کلیک می کنیم انتخاب گروه بعد از لود یهو خودش میره رو ایندکس اول و فقط همون رو لود می کنه و روی بقیه گروه ها میزنم اونا لود نمی شن اینم کدا:
protected void Page_Load(object sender, EventArgs e)
{
filldrpdownlist();


}
protected void drpPic_SelectedIndexChanged(object sender, EventArgs e)
{
fillpic(drpPic.SelectedValue);
}
protected void fillpic(string p1)
{

using (SqlConnection con = new SqlConnection(connectionstring))
{
using (SqlCommand cmd = new SqlCommand("Select top(7) [PicId],[Title],[PicUrl] FROM dbo.Gallery WHERE @p1=GroupId ORDER BY PicID DESC", con))
{
cmd.Parameters.AddWithValue("@p1",p1);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
con.Open();
DataTable dt = new DataTable();
sda.Fill(dt);
ArrayList values = new ArrayList();
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
string picid = dt.Rows[i]["PicId"].ToString();
string picaddress = dt.Rows[i]["PicUrl"].ToString().Replace("~", "..");
string title = dt.Rows[i]["Title"].ToString();
values.Add(new code.dataimg(picid, picaddress, title));
rpt1.DataSource = values;
rpt1.DataBind();
}
}
}
}
}
}
protected void filldrpdownlist()
{
drpPic.Items.Clear();
SqlConnection con = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.GroupWood", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
con.Open();
sda.Fill(dt);
con.Close();
if (dt.Rows.Count > 0)
{
drpPic.DataSource = dt;
drpPic.DataTextField = "GroupText";
drpPic.DataValueField = "GroupId";
drpPic.DataBind();
}
}
}

<div class="rptimage">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="drpPic" AutoPostBack="true" OnSelectedIndexChanged="drpPic_SelectedIndexChanged" runat="server" />
<asp:Repeater ID="rpt1" runat="server">
<ItemTemplate>
<div class="recent-job">
<div class="view"> <div class="view-title"></div>
<img src="<%#Eval("url") %>" alt="<%#Eval("title")%>" width="300px" height="200px" />
</div>
</div>
</ItemTemplate>

</asp:Repeater>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
loading...
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>

</asp:UpdatePanel>

ahmad156
سه شنبه 11 آذر 1393, 11:31 صبح
شرط IsPostBack رو توی PageLoad لحاظ کنین

mamad_za
سه شنبه 11 آذر 1393, 11:56 صبح
مثلاً به این صورت ؟
if (!IsPostBack) {
filldrpdownlist();
}

mamad_za
سه شنبه 11 آذر 1393, 11:59 صبح
تشکر درست شد :قلب:

mamad_za
سه شنبه 11 آذر 1393, 12:02 عصر
فقط یه سوال احمد آقا الان من دارم تعداد عکسام رو لود می کنم بعد می خوام مثلاً بالای 20 تا عکس که لود شد صفحه بندی کم مثلاً بیشتر از 20 تا عکس لود نشد بعد بقیه عکسها تو صفحه بعدی بیاد می خواستم بدونم چطوری با repeater این کار رو انجام بدم

ahmad156
سه شنبه 11 آذر 1393, 12:15 عصر
اولاً اگر مطلب مفید بوده و قابل تشکر هست نیاز به پست جدید نیست، دکمه تشکر بابت همین هست:لبخندساده:
اول از همه تعداد عکس هاتون رو بدست بیارین و طبق اون تعداد صفحات مشخص میشه مثلاً وقتی تعداد عکس هاتون 42 تاست پس سه صفحه دارین پس Paging شما از یک تا سه میشه.من برای اینکار با QueryString کار میکنم که PageIndex رو به صورت QueryString میفرستم یعنی هر سه لینک من( Paging) آدرس صفحه به علاوه PageIndex هست.حالا بر اساس PageIndex من که میتونه 1 تا 3 باشه توی PageLoad عکس مربوط رو (یا 1 تا 20 و یا 21 تا 40 و یا 40 تا 43) رو نشون میدم.

mamad_za
سه شنبه 11 آذر 1393, 12:27 عصر
فقط اگه می شد یه نمونه ای یه مثالی راجب این توضیحاتتون می بود خوب بود چون توضیحات شفاف بود اما اصلاً راجب اجراش هیچ ایده ای ندارم که چه طور باید اجرا کنم

ahmad156
سه شنبه 11 آذر 1393, 13:04 عصر
اینجا ایده و راه حل به شما ارائه میدن نه نمونه کد.