arash69
پنج شنبه 01 خرداد 1393, 15:09 عصر
سلام به همه دوستان.
در رابطه با گریدویو سوالی داشتم؛
پس از اینکه قابلیت صفحه بندی رو برای گریدویو فعال کردم و تابع PageIndexChanging رو هم تعریف کردم؛
حالا با وجود اطلاعات داخل گریدویو، اما تعداد ردیف های اون رو صفر نشون میده.
توابع به شکل زیر هستند:
تابع PageIndexChanging:
protected void products_table_indexChanging(object sender, GridViewPageEventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dbcon1"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Products";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
con.Open();
da.Fill(ds);
con.Close();
products_table.PageIndex = e.NewPageIndex;
products_table.DataSource = ds;
products_table.DataBind();
}
تابع PageLoad که گریدویو رو پر میکنه:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dbcon1"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Products";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
con.Open();
da.Fill(ds);
con.Close();
if (!Page.IsPostBack)
{
products_table.DataSource = ds;
products_table.DataBind();
}
}
و تابع حذف ردیف های تیک خورده در گریدویو:
protected void productrmv(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dbcon1"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "DELETE FROM Products WHERE id=@p1";
SqlCommand cmdImgName = new SqlCommand();
cmdImgName.Connection = con;
cmdImgName.CommandText = "SELECT imgName FROM Products WHERE id=@p1";
cmd.Parameters.Add("@p1",SqlDbType.Int);
cmdImgName.Parameters.Add("@p1",SqlDbType.NVarChar);
string imgName = null;
bool chkd = false;
foreach (GridViewRow gvRow in products_table.Rows)
{
CheckBox chkBox = (CheckBox)gvRow.FindControl("checkRemove");
if (chkBox.Checked)
{
cmd.Parameters["@p1"].Value = products_table.DataKeys[gvRow.RowIndex].Value;
cmdImgName.Parameters["@p1"].Value = products_table.DataKeys[gvRow.RowIndex].Value;
con.Open();
SqlDataReader dr = cmdImgName.ExecuteReader();
if (dr.Read())
{
imgName = dr["imgName"].ToString();
}
dr.Close();
cmd.ExecuteNonQuery();
con.Close();
chkd = true;
if (File.Exists(Server.MapPath(@"img\products\" + imgName)))
{
File.Delete(Server.MapPath(@"img\products\" + imgName));
}
}
}
if (chkd)
{
Response.Redirect("done.aspx");
}
}
ممنون میشم راهنمایی کنید که چرا تعداد ردیف ها رو توی تابع بالا، داخل حلقه ی froeach ، صفر نشون میده.
در رابطه با گریدویو سوالی داشتم؛
پس از اینکه قابلیت صفحه بندی رو برای گریدویو فعال کردم و تابع PageIndexChanging رو هم تعریف کردم؛
حالا با وجود اطلاعات داخل گریدویو، اما تعداد ردیف های اون رو صفر نشون میده.
توابع به شکل زیر هستند:
تابع PageIndexChanging:
protected void products_table_indexChanging(object sender, GridViewPageEventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dbcon1"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Products";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
con.Open();
da.Fill(ds);
con.Close();
products_table.PageIndex = e.NewPageIndex;
products_table.DataSource = ds;
products_table.DataBind();
}
تابع PageLoad که گریدویو رو پر میکنه:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dbcon1"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Products";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
con.Open();
da.Fill(ds);
con.Close();
if (!Page.IsPostBack)
{
products_table.DataSource = ds;
products_table.DataBind();
}
}
و تابع حذف ردیف های تیک خورده در گریدویو:
protected void productrmv(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["dbcon1"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "DELETE FROM Products WHERE id=@p1";
SqlCommand cmdImgName = new SqlCommand();
cmdImgName.Connection = con;
cmdImgName.CommandText = "SELECT imgName FROM Products WHERE id=@p1";
cmd.Parameters.Add("@p1",SqlDbType.Int);
cmdImgName.Parameters.Add("@p1",SqlDbType.NVarChar);
string imgName = null;
bool chkd = false;
foreach (GridViewRow gvRow in products_table.Rows)
{
CheckBox chkBox = (CheckBox)gvRow.FindControl("checkRemove");
if (chkBox.Checked)
{
cmd.Parameters["@p1"].Value = products_table.DataKeys[gvRow.RowIndex].Value;
cmdImgName.Parameters["@p1"].Value = products_table.DataKeys[gvRow.RowIndex].Value;
con.Open();
SqlDataReader dr = cmdImgName.ExecuteReader();
if (dr.Read())
{
imgName = dr["imgName"].ToString();
}
dr.Close();
cmd.ExecuteNonQuery();
con.Close();
chkd = true;
if (File.Exists(Server.MapPath(@"img\products\" + imgName)))
{
File.Delete(Server.MapPath(@"img\products\" + imgName));
}
}
}
if (chkd)
{
Response.Redirect("done.aspx");
}
}
ممنون میشم راهنمایی کنید که چرا تعداد ردیف ها رو توی تابع بالا، داخل حلقه ی froeach ، صفر نشون میده.