PDA

View Full Version : سوال: چرا hiddenfield ها در postbak مقدارشان از بین می رود؟



F_Javan
چهارشنبه 17 مهر 1387, 12:00 عصر
از طریق کلاس زیر می توان ردیف های Gridview را بدون postback با javascript انتخاب کرد.
ولی مشکلش این هست که توی post back ها مقدار hidden field ها از بین میرود.
لطفا مشکل کد من را بگویید.

using System;
using System.Data;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Linq;
using System.Drawing;
using System.Design;
namespace WebControls
{
[DefaultProperty("CurrentValue")]
[ToolboxData("<{0}:TestGrid runat=server></{0}:TestGrid>")]
[ToolboxBitmap(typeof(WebControls.TestGrid), "TestGrid.TestGrid.ico")]


publicclassTestGrid1 : System.Web.UI.WebControls.GridView
{
private System.Web.UI.WebControls.HiddenField hdnFieldGridCount ;
private System.Web.UI.WebControls.HiddenField hdnFieldSelectedRow;
private System.Web.UI.WebControls.HiddenField hdnFieldSelectedID;
private System.Web.UI.WebControls.HiddenField hdnFieldSelectedTitle ;

public TestGrid1()
{
hdnFieldGridCount = newHiddenField();
hdnFieldSelectedRow = newHiddenField();
hdnFieldSelectedID = newHiddenField();
hdnFieldSelectedTitle = newHiddenField();

hdnFieldGridCount.ID = "hdnFieldGridCount_" + ID;
hdnFieldSelectedRow.ID = "hdnFieldSelectedRow_" + ID;
hdnFieldSelectedID.ID = "hdnFieldSelectedID_" + ID;
hdnFieldSelectedTitle.ID = "hdnFieldSelectedTitle_" + ID;
base.RowDataBound += newGridViewRowEventHandler(TestGrid_RowDataBound);
base.DataBound += newEventHandler(TestGrid_DataBound);

}
void TestGrid_DataBound(object sender, EventArgs e)
{
hdnFieldGridCount.Value = base.Rows.Count.ToString();
}
protectedoverridevoid RenderContents(HtmlTextWriter writer)
{
this.hdnFieldGridCount.RenderControl(writer);
this.hdnFieldSelectedRow.RenderControl(writer);
this.hdnFieldSelectedID.RenderControl(writer);
this.hdnFieldSelectedTitle.RenderControl(writer);
base.RenderContents(writer);
}
void TestGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
string strAlternateRowBackColor = string.Empty;
string strRowBackColor = string.Empty;
string strSelectedColor = string.Empty;
try
{

if (base.SelectedRowStyle.BackColor.Name.Substring(0, 2) != "ff")
strSelectedColor = base.SelectedRowStyle.BackColor.Name;
else
strSelectedColor = "#" + base.SelectedRowStyle.BackColor.Name.Remove(0, 2);
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (base.AlternatingRowStyle.BackColor.Name.Substring (0, 2) != "ff")
strAlternateRowBackColor = base.AlternatingRowStyle.BackColor.Name;
else
strAlternateRowBackColor = "#" + base.AlternatingRowStyle.BackColor.Name.Remove(0, 2);
if (base.RowStyle.BackColor.Name.Substring(0, 2) != "ff")
strRowBackColor = base.RowStyle.BackColor.Name;
else
strRowBackColor = "#" + base.RowStyle.BackColor.Name.Remove(0, 2);
}
}
catch (Exception)
{

}
try
{
System.Web.UI.WebControls.Label lblID = (System.Web.UI.WebControls.Label)e.Row.FindControl ("lblID");
System.Web.UI.WebControls.Label lblName = (System.Web.UI.WebControls.Label)e.Row.FindControl ("lblName");
e.Row.Attributes.Add("onclick", "GetOriginalColor('" + strAlternateRowBackColor + "','" + strRowBackColor + "');javascrit:return GetSelectedRecord('" + e.Row.RowIndex + "','" + lblID.Text + "','" + lblName.Text + "','" + strSelectedColor + "',document.getElementById('" + base.ClientID + "'),'" + hdnFieldGridCount.ClientID + "','" + hdnFieldSelectedRow.ClientID + "','" + hdnFieldSelectedID.ClientID + "','" + hdnFieldSelectedTitle.ClientID + "')");
e.Row.Attributes.Add("style", "cursor : pointer");
}
catch (Exception)
{
}
}
publicoverridestring ID
{
get
{
returnbase.ID;
}
set
{
base.ID = value;
hdnFieldGridCount.ID = "hdnFieldGridCount_" + ID;
hdnFieldSelectedRow.ID = "hdnFieldSelectedRow_" + ID;
hdnFieldSelectedID.ID = "hdnFieldSelectedID_" + ID;
hdnFieldSelectedTitle.ID = "hdnFieldSelectedTitle_" + ID;
}
}
publicstring GetGridCount
{
get { return hdnFieldGridCount.Value; }
}
publicstring GetSelectedRow
{
get { return hdnFieldSelectedRow.Value; }
}
publicstring GetSelectedID
{
get { return hdnFieldSelectedID.Value; }
}
publicstring GetSelectedTitle
{
get { return hdnFieldSelectedTitle.Value; }
}
}
}