نمایش نتایج 1 تا 3 از 3

نام تاپیک: DataBinding Problem، نحوه ی بایند کردن DataList به DataTable

  1. #1
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727

    Tick DataBinding Problem، نحوه ی بایند کردن DataList به DataTable

    سلام و خسته نباشید
    یک DataList خیلی ساده روی Page ام کشیدم با دو Lable به صورت زیر :
    <asp:DataList ID="DataList1" runat="server" EnableViewState="false" DataKeyField="id">
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Eval("title") %>'></asp:Label>
    <hr />
    <asp:Label ID="Label2" runat="server" Text='<%# Eval("body") %>'></asp:Label>
    </ItemTemplate>
    </asp:DataList>

    حالا در CodeBehind صفحه هم این کد رو نوشتم :
    public partial class _Default : System.Web.UI.Page
    {
    int i = 0;
    DataTable dt = new DataTable();
    string title = string.Empty;

    DataColumn dc1 = new DataColumn("id");
    DataColumn dc2 = new DataColumn("title");
    DataColumn dc3 = new DataColumn("body");

    protected void Page_Load(object sender, EventArgs e)
    {
    this.dt.Columns.Add(dc1);
    this.dt.Columns.Add(dc2);
    this.dt.Columns.Add(dc3);

    this.DataList1.DataSource = this.dt;
    this.DataList1.DataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    this.title = "Title - " + this.i.ToString();
    string body = this.FCKeditor1.Value;

    this.dt.Rows.Add(new object[] { this.i, this.title, body });
    }
    }


    اما پس از فشار دادن دکمه، هیچ اتفاقی نمیفته، مشکل کجاست ؟

  2. #2
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727

    نقل قول: DataBinding Problem، نحوه ی بایند کردن DataList به DataTable

    کسی نبود ؟

  3. #3

    نقل قول: DataBinding Problem، نحوه ی بایند کردن DataList به DataTable

    این مشکل اکثر افرادی هست که به تازگی از Win Apps به Web Apps مهاجرت کردن و مفاهیم ویندوز رو با وب اشتباه می گیرند.
    پس از اینکه صفحه ای به کلاینت پاس داده شد، تمامی منابع خاص اون صفحه هم از بین میرن.
    متغیر عمومی در صفحات وب معنا نداره. برای اینکه موجودیتی رو در تمامی صفحات داشته باشی از مکانیزم های مختلفی که ارائه شده مثل Session، Cache، Application و ... باید استفاده کنی.
    کدی که نوشتی بر طبق ماهیت وب، هر بار تمامی اشیا رو مجددا ایجاد می کنه و در نتیجه، DataTable همیشه خالی هست.
    کد اصلاح شده رو به شکل ذیل واست نوشتم. البته کمی با عجله نوشتم. میتونی قشنگتر هم بنویسیش:

    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    {
    if (Session["dt"] != null)
    {
    DataTable dt = (DataTable)Session["dt"];
    DataList1.DataSource = dt;
    DataList1.DataBind();
    }
    }
    }

    protected void Button_Click(object sender, EventArgs e)
    {
    int i = 0;
    string title = string.Empty;
    title = "Title - " + i.ToString();
    string body = FCKeditor1.Value;;

    if (Session["dt"] == null)
    {
    DataTable dt = new DataTable();

    DataColumn dc1 = new DataColumn("id");
    DataColumn dc2 = new DataColumn("title");
    DataColumn dc3 = new DataColumn("body");

    dt.Columns.Add(dc1);
    dt.Columns.Add(dc2);
    dt.Columns.Add(dc3);

    dt.Rows.Add(new object[] { i, title, body });

    Session["dt"] = dt;

    DataList1.DataSource = dt;
    DataList1.DataBind();
    }
    else
    {
    DataTable dtTemp = (DataTable) Session["dt"];
    dtTemp.Rows.Add(new object[] { i, title, body });
    Session["dt"] = dtTemp;

    DataList1.DataSource = dtTemp;
    DataList1.DataBind();
    }
    }
    }

    موفق باشید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •