PDA

View Full Version : سوال: Viewstate و Datatable



robat7
سه شنبه 26 آذر 1392, 00:31 صبح
درود
من در asp تازه کار هستم
من یک پیج دارم که یک Grid و یک Fileload و یک Button در آن دارم (تصویر پیوست)
می خواهم وقتی روی کلید Add کلیک می کنم مشخصات فایل انتخابی در درون Grid اضافه شود
برای این منظور کد زیر را در کد پشت صفحه نوشته ام




DataColumn column;
DataRow row;
System.Data.DataTable table = new DataTable("Table");
int iRow = 0;
bool ID_TableExits = false;


private void CreateDataTable()
{
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
// Add the Column to the DataColumnCollection.
table.Columns.Add(column);

// Create second column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "FileName";
column.AutoIncrement = false;
column.Caption = "FileName";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);

// Create third column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int64");
column.ColumnName = "FileSize";
column.AutoIncrement = false;
column.Caption = "FileSize";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);

}

protected void Page_Load(object sender, EventArgs e)
{

if (ViewState["Table"] == null)
{
CreateDataTable();
}
else
{
table = (DataTable)ViewState["Table"];
}
}


protected void ButtonAdd_Click(object sender, EventArgs e)
{

row = table.NewRow();
row["id"] = iRow;
row["FileName"] = FileUpload1.PostedFile.FileName.ToLower();
row["FileSize"] = FileUpload1.PostedFile.ContentLength;
table.Rows.Add(row);
GridViewFiles.DataSource = (DataTable)ViewState["Table"];
GridViewFiles.DataBind();
iRow++;
ID_TableExits = true;

}






کد مذکور کار نمی کند.
در ابتدا از Viewstate استفاده نمی کردم و وقتی روی کلید Add کلیک می کنم مشخصات فایل انتخابی در Grid قرار می گرفت ولی با Post back شدن صفحه فقط آخرین فایل انتخابی در grid نمایش داده می شد.
حال که ار Viewstate استفاده می کنم اصلا چیزی در grid نمایش داده نمی شود:اشتباه::ناراحت::افسرده:
ممکن است راهنمایی فرمایید کجای کار اشکال دارد
قبلا سپاسگزارم

robat7
سه شنبه 26 آذر 1392, 02:07 صبح
مشکل بر طرف شد:لبخندساده:





DataColumn column;
DataRow row;
System.Data.DataTable table = new DataTable("Table");
int iRow = 0;

bool ID_TableExits = false;


private void CreateDataTable()
{
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
// Add the Column to the DataColumnCollection.
table.Columns.Add(column);

// Create second column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "FileName";
column.AutoIncrement = false;
column.Caption = "FileName";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);

// Create third column.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int64");
column.ColumnName = "FileSize";
column.AutoIncrement = false;
column.Caption = "FileSize";
column.ReadOnly = false;
column.Unique = false;
// Add the column to the table.
table.Columns.Add(column);

}

protected void Page_Load(object sender, EventArgs e)
{

if (ViewState["FileTable"] == null)
{
CreateDataTable();
}
else
{
table = (DataTable)ViewState["FileTable"];
}
if(ViewState["MyCounter"] != null)
iRow = (int)ViewState["MyCounter"];
}


protected void ButtonBrowse_Click(object sender, EventArgs e)
{
string eror = "File Added";
if (FileUpload1.PostedFile.FileName != "")
{

row = table.NewRow();
row["id"] = iRow;
row["FileName"] = FileUpload1.PostedFile.FileName.ToLower();
row["FileSize"] = FileUpload1.PostedFile.ContentLength;
table.Rows.Add(row);

ViewState["FileTable"] = table;

GridViewFiles.DataSource = (DataTable)ViewState["FileTable"];
GridViewFiles.DataBind();
iRow++;
ViewState["MyCounter"] = iRow;
TextBox3.Text = "a";
eror = "<< " + FileUpload1.FileName + " >> Added to the list";
Response.Write("<script language='javascript'>alert('" + eror + "')</script>");
}
else
{
eror = "You need to select a File";
Response.Write("<script language='javascript'>alert('" + eror + "')</script>");
}
}