Parham.D
شنبه 28 آذر 1388, 10:38 صبح
سلام دوستان و اساتید گرام.
سوال اصلی: زمانی که بر روی Edit از یک ردیف در GridView کلیک میکنم، صفحه دوباره Load میشه، اما GridView را نمایش نمیدهد. چرا اینطور هست؟ مشکل از کجاست؟
توضیحات: به صورت Runtime یک GridView ایجاد و داده ها را با آن نمایش میدم. Edit, Delete را هم فعال کردم. تا اینجای کار مشکلی نیست. یک قطعه کد هم با جستجو در Google پیدا کردم برای رویداد RowEditing و اضافه کردم. بعد از زدن دکمه Edit و بعد از Load شدن دوباره صفحه GridView نمایش داده نمیشه.
کد صفحه برای بررسی بیشتر:
public partial class Admin : System.Web.UI.Page
{
SqlConnection Connection = new SqlConnection(WebConfigurationManager.ConnectionSt rings["ConnectionString"].ConnectionString);
SqlDataAdapter SDA = new SqlDataAdapter();
DataSet DS = new DataSet();
GridView UserGridView = new GridView();
string[] FieldItemsDataField = new string[4] { "User_Name", "User_Password", "User_Type", "User_Display",};
string[] FieldItemsHeaderText = new string[4] { "نام کاربر", "رمز عبور", "نوع کاربر", "نام نمایشی" };
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CreateUserGridView();
}
}
protected void RadioButtonList_SelectedIndexChanged(object sender, EventArgs e)
{
if (RadioButtonList.SelectedIndex == 0)
{
UserGridView.AutoGenerateColumns = false;
UserGridView.AutoGenerateDeleteButton = true;
UserGridView.AutoGenerateEditButton = true;
UserGridView.AutoGenerateSelectButton = true;
UserGridView.ID = "UserGridView";
UserGridView.Width = Unit.Percentage(100);
UserGridView.EditIndex = -1;
UserGridView.RowEditing += new GridViewEditEventHandler(UserGridView_RowEditing);
Panel.Controls.Add(UserGridView);
CreateUserGridView();
}
}
protected void UserGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
UserGridView.EditIndex = e.NewEditIndex;
CreateUserGridView();
}
private void CreateUserGridView()
{
for (int i = 0; i < 4; i++)
{
BoundField Field = new BoundField();
Field.DataField = FieldItemsDataField[i];
Field.HeaderText = FieldItemsHeaderText[i];
DataControlField Column = Field;
UserGridView.Columns.Add(Column);
}
SDA.SelectCommand = new SqlCommand();
SDA.SelectCommand.Connection = Connection;
SDA.SelectCommand.CommandText = "SELECT User_Name, User_Password, User_Type, User_Display FROM Users";
SDA.SelectCommand.CommandType = CommandType.Text;
//Fill the dataSet with employee table
try
{
Connection.Open();
SDA.Fill(DS, "Users");
Connection.Close();
}
catch (Exception)
{
}
UserGridView.DataSource = DS;
UserGridView.DataMember = "Users";
UserGridView.DataBind();
SDA = null;
Connection = null;
}
}
سوال اصلی: زمانی که بر روی Edit از یک ردیف در GridView کلیک میکنم، صفحه دوباره Load میشه، اما GridView را نمایش نمیدهد. چرا اینطور هست؟ مشکل از کجاست؟
توضیحات: به صورت Runtime یک GridView ایجاد و داده ها را با آن نمایش میدم. Edit, Delete را هم فعال کردم. تا اینجای کار مشکلی نیست. یک قطعه کد هم با جستجو در Google پیدا کردم برای رویداد RowEditing و اضافه کردم. بعد از زدن دکمه Edit و بعد از Load شدن دوباره صفحه GridView نمایش داده نمیشه.
کد صفحه برای بررسی بیشتر:
public partial class Admin : System.Web.UI.Page
{
SqlConnection Connection = new SqlConnection(WebConfigurationManager.ConnectionSt rings["ConnectionString"].ConnectionString);
SqlDataAdapter SDA = new SqlDataAdapter();
DataSet DS = new DataSet();
GridView UserGridView = new GridView();
string[] FieldItemsDataField = new string[4] { "User_Name", "User_Password", "User_Type", "User_Display",};
string[] FieldItemsHeaderText = new string[4] { "نام کاربر", "رمز عبور", "نوع کاربر", "نام نمایشی" };
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CreateUserGridView();
}
}
protected void RadioButtonList_SelectedIndexChanged(object sender, EventArgs e)
{
if (RadioButtonList.SelectedIndex == 0)
{
UserGridView.AutoGenerateColumns = false;
UserGridView.AutoGenerateDeleteButton = true;
UserGridView.AutoGenerateEditButton = true;
UserGridView.AutoGenerateSelectButton = true;
UserGridView.ID = "UserGridView";
UserGridView.Width = Unit.Percentage(100);
UserGridView.EditIndex = -1;
UserGridView.RowEditing += new GridViewEditEventHandler(UserGridView_RowEditing);
Panel.Controls.Add(UserGridView);
CreateUserGridView();
}
}
protected void UserGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
UserGridView.EditIndex = e.NewEditIndex;
CreateUserGridView();
}
private void CreateUserGridView()
{
for (int i = 0; i < 4; i++)
{
BoundField Field = new BoundField();
Field.DataField = FieldItemsDataField[i];
Field.HeaderText = FieldItemsHeaderText[i];
DataControlField Column = Field;
UserGridView.Columns.Add(Column);
}
SDA.SelectCommand = new SqlCommand();
SDA.SelectCommand.Connection = Connection;
SDA.SelectCommand.CommandText = "SELECT User_Name, User_Password, User_Type, User_Display FROM Users";
SDA.SelectCommand.CommandType = CommandType.Text;
//Fill the dataSet with employee table
try
{
Connection.Open();
SDA.Fill(DS, "Users");
Connection.Close();
}
catch (Exception)
{
}
UserGridView.DataSource = DS;
UserGridView.DataMember = "Users";
UserGridView.DataBind();
SDA = null;
Connection = null;
}
}