PDA

View Full Version : پست بک در گریدویو(ajax)



tarsim
دوشنبه 25 اسفند 1393, 23:04 عصر
دوستان سلام . لطفا بگید باید چیکار کنم. دیگه کلافه شدم بس گشتم.

یک سمپل رو زیپ کردم پایین قرار دادم ببینین . اگر میشه بگید چاره کارم چیه.
دانلود سمپل (http://uplod.ir/04bptowxpssf/ajax.zip.htm)
من یک گریدویو دارم که با دیتا تیبل پرشده(به صورت دستی . )

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();

dt.Columns.Add("name");
dt.Columns.Add("fname");
dt.Rows.Add("ali", "rezaii");
dt.Rows.Add("mohsen", "mahdavi");
dt.Rows.Add("reza", "javadi");
dt.Rows.Add("siyamak", "behrooz");


GridView1.DataSource = dt;
GridView1.DataBind();
}
}



خب حالا ItemTemplate درون گرید ویو قرار دادم و یک آپدیت پنل توی اون قرار دادم و توی آپدیت پنل هم یک button و label قرار دادم . و همینطور یک UpdateProgress تا وقتی روی دکمه کلیک شد به صورت ajax یک پیامی نوشه میشه که همون label هست .


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds (5));
GridViewRow gvRow = (GridViewRow)(((Button)e.CommandSource).NamingCont ainer);



Label l1 = (Label)gvRow.FindControl("lbl_name");
if (e.CommandName == "test")

l1.Text = "thanks";


}



یک وقفه هم قرار دادم تا اون زمان یک متنی رو به کاربر نشون بدم با UpdateProgress .
خب مشکل من اینجا شروع میشه که وقتی روی هرکدوم از دکمه ها کلیک شه UpdateProgress مربوط به اون سط نشمایش داده میشه واگر سریع کاربر دکمه سطر های دیگه رو هم بزنه UpdateProgress فقط آخرین سطری که کلیک شد نمایش میده . کلا من میخوام کاربر وقتی هر سطری رو کلیک کرد UpdateProgress کنار اون سطر باشه و همزمان اگر مثلا 10 تا سط هم کلیک کرد UpdateProgress های جدا گانه کنار هر سر قرار بگیره . دقیقا مثل لایک سایت های ایرانی که برای هر مطلب یک دکمه لایک وجود داره و هر مطلب کلیک شده لودینگ خودش رو داشته باشه.این رو هم بگم(من چون مطالبم رو فقط توی گریدویو نمایش میدم باید این دکمه توی گرید ویو باشه). لطفا یک نگاه به سمپل بنده بندازید و خواهش میکنم جواب سوالم رو بدید


<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:GridView ID="GridView1" runat="server" onrowcommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" CommandName="test" Text="ajax" />
<asp:Label ID="lbl_name" runat="server" ForeColor="Red"></asp:Label>
<asp:UpdateProgress ID="UpdateProgress1" runat="server"
AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
loading ...
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

</div>