PDA

View Full Version : آپدیت کردن گرید به صورت دستی مثل امکاناتی که از طریق Sqldatasource



kezack
سه شنبه 16 مهر 1387, 22:08 عصر
با سلام
می خوام گریدی رو که با کد باینش کردم خاصیت Update رو براش بزارم دقیقا مثل امکاناتی که میشه با sqldatasource انجام داد از templeteField استفاده کردم و داخل ItemTemplete یک label قرار دادم که فیلدمو بهش بایند کردم و در قسمت EditItemTemplete یک TextBox قرار دادم که وقتی دکمه Edit رو زدم TextBox فعال شه و بشه از مقداری که بهش میدم جدولمو آپدیت کنم
سوالم اینه در کدام قسمت مربوط به رویداد های grid باید کد Update رو بنویسم و چه جوری با زدن دکمه edit .تکس باکسم فعال شه بجای labelهام که بشه باهاش جدولمو Update کنم

ghasemi_dev
چهارشنبه 17 مهر 1387, 00:27 صبح
دوست عزیز برای Update باید از رویداد RowUpdating استفاده کنی، البته رویداد های RowEditing و RowCancelingEdit رو هم باید Implement کنی
در مورد فعال شدن TextBox هم باید بگم که بصورت خودکار خودش انجام میشه
موفق باشید

kezack
چهارشنبه 17 مهر 1387, 10:07 صبح
در رویداد RowUpdating کد مربوط به Update رو بنویسم یا رویداد RowEditing ؟
میشه یکم بیشتر توضیح بدین

kezack
چهارشنبه 17 مهر 1387, 16:34 عصر
نه این کارو منم میکنم ولی میخوام با گرید این کار رو بکنم اخه حذف و درج رو انجام دادم رو آپدیتش موندم

kezack
چهارشنبه 17 مهر 1387, 19:03 عصر
دوستان کسی نیست کمک کنه ؟ من در داخل رویداد RowEditing چه کدی باید بنویسم

amironline
چهارشنبه 17 مهر 1387, 23:38 عصر
فكر كنم اين نمونه بدردتون بخوره

كد Polls.aspx

<%@ Page Language="C#" MasterPageFile="~/Admin/Admin.master" AutoEventWireup="true" CodeFile="Polls.aspx.cs" Inherits="Admin_Polls" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
سوال جديد<br />
<asp:TextBox ID="txtQuestion" runat="server" Columns="45" CssClass="inputsfa"></asp:TextBox>&nbsp;<asp:Button
ID="btnAddQuestion" runat="server" CssClass="button" OnClick="btnAddQuestion_Click"
Text="اضافه كن" /><br />
<br />
<asp:GridView ID="gvQuestions" runat="server" AllowPaging="True" AutoGenerateColumns="False"
Width="423px" DataKeyNames="QuestionID" CellPadding="4" ForeColor="#333333" GridLines="None"
OnRowEditing="gvQuestions_RowEditing"
OnRowCancelingEdit="gvQuestions_RowCancelingEdit"
OnRowUpdating="gvQuestions_RowUpdating" OnRowDeleting="gvQuestions_RowDeleting">
<EmptyDataTemplate>
هيچ نظرسنجي وجود ندارد
</EmptyDataTemplate>
<Columns>
<asp:TemplateField HeaderText="سوال">
<EditItemTemplate>
<asp:TextBox ID="txtQuestionText" runat="server" CssClass="inputsfa" Text='<%# Bind("QuestionText") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("QuestionText") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="فعال">
<EditItemTemplate>
<asp:CheckBox ID="chbEditIsCurrentQuestion" runat="server" Checked='<%# Bind("IsCurrentQuestion") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("IsCurrentQuestion") %>'
Enabled="false" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="آرشيو">
<EditItemTemplate>
<asp:CheckBox ID="chbEditArchived" runat="server" Checked='<%# Bind("Archived") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Bind("Archived") %>' Enabled="false" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="تاريخ">
<EditItemTemplate>
<asp:TextBox ID="txtAddedDate" runat="server" Text='<%# Bind("AddedDate", "{0:d}") %>' Enabled="false" Columns="15"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("AddedDate", "{0:d}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField CancelText="انصراف" DeleteText="حذف" EditText="ويرايش" InsertText="اضافه"
NewText="جديد" SelectText="انتخاب" ShowEditButton="True" UpdateText="ذخيره" HeaderText="عمليات" InsertVisible="False" ShowDeleteButton="True" ShowHeader="True" />
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />

</asp:GridView>
<br />
</asp:Content>



كد Polls.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Admin_Polls : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
GridViewBind();
}
protected void btnAddQuestion_Click(object sender, EventArgs e)
{
PollsQuestions.SaveQuestion(txtQuestion.Text, true, false);
Response.Redirect("~/Admin/Polls.aspx");
}

protected void gvQuestions_RowEditing(object sender, GridViewEditEventArgs e)
{
gvQuestions.EditIndex = e.NewEditIndex;
GridViewBind();
}

private void GridViewBind()
{
DataSet pqDataSet = PollsQuestions.GetQuestions();
gvQuestions.DataSource = pqDataSet.Tables[0].DefaultView;
gvQuestions.DataBind();
}

protected void gvQuestions_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvQuestions.EditIndex = -1;
GridViewBind();
}
protected void gvQuestions_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int QuestionID = int.Parse(gvQuestions.DataKeys[0].Value.ToString());
string QuestionText = ((TextBox)gvQuestions.Rows[e.RowIndex].FindControl("txtQuestionText")).Text;
bool IsCurrentQuestion = ((CheckBox)gvQuestions.Rows[e.RowIndex].FindControl("chbEditIsCurrentQuestion")).Checked;
bool Archived = ((CheckBox)gvQuestions.Rows[e.RowIndex].FindControl("chbEditArchived")).Checked;
PollsQuestions.UpdateQuestion(QuestionID, QuestionText, IsCurrentQuestion, Archived);
gvQuestions.EditIndex = -1;
GridViewBind();

}
protected void gvQuestions_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int QuestionID = int.Parse(gvQuestions.DataKeys[0].Value.ToString());
PollsQuestions.DeleteQuestion(QuestionID);
gvQuestions.EditIndex = -1;
GridViewBind();

}
}

kezack
پنج شنبه 18 مهر 1387, 22:30 عصر
دوست خوبم amironline ممنون بابت کدی که قرار دادین کارم راه افتاد خیلی بدردم خورد
حالا یک سوال اگه بخوام یک checkBox بزارم که با انتخاب چند تا اون سطر ها آپدیت بشه چکار کنم
یعنی یک دکمه باشه و یک ستون checkBox و با زدن اون دکمه متدهای مربوط به rowUpdating و rowEditing مثل اپدیت کردن هر ستون بصورت مجزا اجرا بشه
با تشکر