PDA

View Full Version : سوال: یک سوال در مورد UpdatePanel



fakhravari
سه شنبه 16 اسفند 1390, 21:20 عصر
با سلام
من یه دکمه در گرید دارم و گرید در UpdatePanel گذاشتم.
وقتی گذاشتم دیگه دستور Click کار نمیکنه.
نمیشه Triggers تعریف کرد چون نمیشناسه مقدار درون گرید .
راه کار پیشنهادی چیست؟:متفکر:

Mostafa_Dindar
سه شنبه 16 اسفند 1390, 21:54 عصر
سلام ,

به طور پیش فرض هر کنترلی که باعث Postback شود اگر داخل UpdatePanel قرارداشته باشد , باعث بروزرسانی UpdatePanel خواهد شد .

fakhravari
سه شنبه 16 اسفند 1390, 23:04 عصر
خوب مشکل اینه که دکمه کلیک غیر فعال شده.
اگر از درون UpdatePanel دربیارم درست کار میکنه

mahmood_4246
سه شنبه 16 اسفند 1390, 23:42 عصر
مشکلی بابت دکمه تو گرید و UpdatePanel نیست .. من گریدام همشون تو UpdatePanel هستن و دکمه هم چنتا دارن بدون مشکل .. ببن کجا سوتی دادی که کار نمیکنه

fakhravari
سه شنبه 16 اسفند 1390, 23:59 عصر
در مورد radrating تلریک است.
این لینک ببنید
http://www.telerik.com/community/forums/aspnet-ajax/rating/how-to-value-rating.aspx
خود مدیر سایت هم یه سمپل داد که چیزی مثل مال من
اما مشکل اینه کار نمیکنه.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" DataKeyNames="ID" AutoGenerateColumns="False"
ShowHeader="False" BorderStyle="None" GridLines="None" Width="100%"
DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<telerik:radrating ID="RadRating1" OnRate="RadRating1_Rate" AutoPostBack="True" Runat="server"
Skin="Forest" Orientation="Horizontal" SelectionMode="Single" ItemCount="5" /></p>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>



<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>"
SelectCommand="SELECT * FROM [RatingPost]">
</asp:SqlDataSource>


</ContentTemplate>
</asp:UpdatePanel>

</form>
</body>
</html>
protected void RadRating1_Rate(object sender, EventArgs e)
{
RadRating rating = (RadRating)sender;
Fakhravary.Message.MessageBox(rating.Value.ToStrin g(), this);
}
اگر از UpdatePanel در بیاریم درسته دیگه.
MessageBox یه تابع پیغام

mahmood_4246
چهارشنبه 17 اسفند 1390, 00:07 صبح
ببین میتونی از RowCommand باسه کلیک شدن استفاده کنی

fakhravari
چهارشنبه 17 اسفند 1390, 00:55 صبح
اینم توی گرید گذاشتم تست کردم
<asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="clik" Text="Button" />
بازم مثل قبلی درون UpdatePanel اجرا نمیشه.
بیرون که میارم توی RowCommandاجرا میشه

مهدی کرامتی
چهارشنبه 17 اسفند 1390, 08:27 صبح
یک مثال (پروژه ویژوال استودیو) آماده برای اجرا، ضمیمه پاسخ تان کنید تا بررسی شود.

fakhravari
چهارشنبه 17 اسفند 1390, 11:30 صبح
با سلام
یه سمپل ساده .
فقط زمانی که بین تگ های <asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
میزارم دیگه رویدادشون اجراع نمیشه.:متفکر:

dorparasti
چهارشنبه 17 اسفند 1390, 11:58 صبح
یه حاصیت هم در updatepanel هست به نام ChildrenAsTriggers (http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.childrenastriggers.aspx) . ; که باید true باشه .
بعد هم در MSDN هست که اگر گریدویو و Detailsview خاصیت EnableSortingAndPagingCallbacks شون true باشه داخل updatePanel کار نمی کنن .

fakhravari
چهارشنبه 17 اسفند 1390, 13:15 عصر
پست 10 برسی کردم جواب نداد

fakhravari
چهارشنبه 17 اسفند 1390, 13:48 عصر
با این کد اجرا میشه
<Triggers>
<asp:PostBackTrigger ControlID="GridView1" />
</Triggers>
اما فکر کنم PostBack میشه

neda555
جمعه 19 اسفند 1390, 20:50 عصر
میشه کمی توضیح بدین اون buttom کارش چیه ؟قراره چیزی insert بشه و پیام بده درج شده؟
چرا از تریلیک استفاده کردید؟

ببخشید آخه من vs2008 دارم ولی اون نمونه برنامه آماده اجرا که گذاشتید نمی دونم چرا داخل خود buttom_click کد ننوشتید
با توجه به سوالی که پرسیدید من با گذاشتن buttom داخل گریدویو یی که در updatepanel باشه جواب میگیرم و کلیک دکمه کار میکنه

fakhravari
جمعه 19 اسفند 1390, 22:30 عصر
2 تا گرید یکی بیرون یکی داخل .
کدومش اجرا شده ؟
خوب بیرونی اجرا شده داخل ابدیت پنل اجرا نمیشه

neda555
جمعه 19 اسفند 1390, 22:38 عصر
آقای فخرآوری برنامتون (پست 9) را بردم داخل vs2008 همه چیزش درسته فقط گرید 1 مشکل داره ، من پاکش کردم همون دومی را کپی کردم داخل آپدیت پنل درست شد

fakhravari
جمعه 19 اسفند 1390, 23:20 عصر
من واقعا نمیدونم شما دارید چی کار میکنید .:عصبانی::عصبانی::عصبانی::عصب انی::عصبانی::عصبانی::عصبانی:
از دوستان میخواهم در مورد این مورد جواب بدهند.
مشکل با UpdatePanel.
اگر توی گرید باشه مقدارش ارسال نمیشه

neda555 (http://barnamenevis.org/member.php?244496-neda555)
فقط ارسال پیام خصوصی پاسخ جواب بدن.
توی این پست جواب ندن.

این جا هم سوال گذاشتم
http://www.telerik.com/community/forums/aspnet-ajax/rating/how-to-value-rating.aspx
سایت تلریک.
اوناهم یه جوابی دادن.

fakhravari
یک شنبه 21 اسفند 1390, 13:23 عصر
دوستان جوابی پیدا نشد.:ناراحت:

مهدی کرامتی
دوشنبه 22 اسفند 1390, 10:30 صبح
شما در کدتون از مشخصه ClientScript صفحه استفاده کرده اید که خود ویژوال استودیو میگه دیگه از اون استفاده نکنید:
thispage.ClientScript.RegisterStartupScript(thispa ge.GetType(), "msg", "window.alert('" + Text + "');", true);
به جای اون از کلاس ScriptManager استفاده کنید:
public void MessageBox(string Text)
{
ScriptManager.RegisterStartupScript(this, GetType(), "msg", "window.alert('" + Text + "');", true);
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Click")
{
MessageBox("شماره id : "+e.CommandArgument);
}
}

fakhravari
دوشنبه 22 اسفند 1390, 11:22 صبح
با سلام.
بله یه اشتباه بود ولی سوال من در باره اون نبود. مثال ببنید.
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" DataKeyNames="ID" AutoGenerateColumns="False"
ShowHeader="False" BorderStyle="None" GridLines="None" Width="100%"
DataSourceID="SqlDataSource1" onrowcommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>

<telerik:radrating ID="RadRating1" OnRate="RadRating1_Rate" AutoPostBack="True" Runat="server"
Skin="Forest" Orientation="Horizontal" SelectionMode="Single" ItemCount="5" />

<asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="clik" Text="Button" />

</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:ConnectionString1.ProviderName %>"
SelectCommand="SELECT * FROM [RatingPost]">
</asp:SqlDataSource>
</form>
من در اصل مقدار کلیک شده RadRating1 میخواهم که وقتی در ابدیت پنل نیست درسته اما وقتی میزارم اصلا کار نمی کنه.
گفتم شاید اون کار نکند یه باتن گذاشتم در رویداد rowcomand هم تست کردم کار نکرد بازم.
در کد بهین
public void MessageBox(string Text)
{
ScriptManager.RegisterStartupScript(this, GetType(), "msg", "window.alert('" + Text + "');", true);
}

protected void RadRating1_Rate(object sender, EventArgs e)
{
RadRating rating = (RadRating)sender;
GridViewRow row = (GridViewRow)rating.NamingContainer;
string ID = GridView1.DataKeys[row.RowIndex].Value.ToString();

MessageBox("امتیاز: " + ID);
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "clik")
{
MessageBox("شماره id : " + e.CommandArgument);
}
}

نمیخوا ترگر تعریف کنیم؟:ناراحت:

مهدی کرامتی
دوشنبه 22 اسفند 1390, 12:59 عصر
مثل دفعه قبل یک مثال قابل اجرا با همین کامپوننت بگذارید تا بررسی شود.

fakhravari
دوشنبه 22 اسفند 1390, 18:30 عصر
اخه مشکل اینجاست که dll حجمش زیاده. rar میشه 4 mg اگر به نتیجه ای نرسیدیم میزارمش.
مثال ساده تر
فکر کنم اگر رویدادی که در GridView1_RowCommand اجرا بشه اونم بتونه اجرا بشه چون رفتاراشون مثل هم هستند.
سمپل پست 9
if (e.CommandName == "clik")
این رویداد چطور میتونم اجراع کنم؟
چون اصلا در ابدیت پنل کار نمیکنه

fakhravari
شنبه 27 اسفند 1390, 10:12 صبح
دوستان اگر من اشتباه میکنم بگویید :گیج:

fakhravari
شنبه 27 اسفند 1390, 12:04 عصر
یه نمونه سمپل دیگه.
چرا اشکال داره این Update panel

alonemm
شنبه 27 اسفند 1390, 13:42 عصر
باسلام:
نمونه کد زیر رو ببینید:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="btn1" Text="Button" onclick="Unnamed1_Click" />
<asp:Label runat="server" ID="lbl1" Text="Label"></asp:Label>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333"
GridLines="None" onrowcommand="GridView1_RowCommand">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="MyNeame" HeaderText="MyNeame"
SortExpression="MyNeame" />
<asp:BoundField DataField="id" HeaderText="id" SortExpression="id" />
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnEdit" runat="server" CommandName="EditRow" CommandArgument='<%# Eval("MyNeame") %>' Text="Majid" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>"
SelectCommand="SELECT [MyNeame], [id] FROM [tbl]"></asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>




using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Unnamed1_Click(object sender, EventArgs e)
{
lbl1.Text = "Majid " + e.ToString();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "EditRow")
{
lbl1.Text = e.CommandArgument.ToString();
}
}
}



پ.و:
تست شده جواب داده...!

fakhravari
شنبه 27 اسفند 1390, 15:28 عصر
بله اخر این درست شد.
باید یگم از اولشم چیزی نبود.
خودم اومده بودم در page load یه Response.Write(DateTime.Now); گذاشته بودم.
برای همین چیزی نمایش نمیداد.:قهقهه: