Introduction
Currently, I work on a web design project. I created a MenuCreator which is based on XML files. Then, the client the XML files are hard to maintain, since he knows not much about computer. Therefore, I created a simple XML editor with datagrid
Work With....
XML, DataTable, DataView, DataGrid
Step:
1. Load DataTable from XML
2. Bind DataTable to DataGrid
3. Work with DataGrid
- Insert a new row into n-position
- Edit a data row in a datagrid
- Delete a data row in a datagrid
- Move a data row up
- Move a data row down
- The data row GOTO n-position
4. Write back to XML
CODE...
There are thousand samples with edit and delete a dataRow in datagrid samples on web
So...i just put Insert a new row into n-position and Move up,down and GOTO ON...
INSERT INTO
private void addNewRow()
{
if(this.isGoodIndex( TB_newDrPosition.Text))
{
int newRp = int.Parse(TB_newDrPosition.Text);
DataTable dt = (DataTable) this.Session[this._SessionName];
DataRow dr = dt.NewRow();
dr["Id"] = newRp;
dt.Rows.InsertAt(dr,newRp);
this.reorderId(dt);
this.Session["xmlTable"] =dt;
DataView dv = dt.DefaultView;
dv.Sort = "Id";
this.newRowFlag.Value = "1";
this.DataGrid1.DataSource = dv;
this.DataGrid1.EditItemIndex = newRp;
this.DataGrid1.DataBind();
}
else
{
this.LWarning.Text = "<a class='warning' >" +
"Bad Index Input </a>";
}
}
Item MOVE MOVE MOVE AND GOTO
In this programe, moving row up and down is just switch rows around.
ItemCommand in DataGrid
private void DataGrid1_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int selectedIndex = e.Item.ItemIndex;
DataTable dt = this.takeOutDt();
switch(e.CommandName.Trim())
{
case "SelectUp":
if(selectedIndex == 0)
{
this.LWarning.Text = "<a class='warning' >" +
"Top row can not be moved up, there is no heaven</a>";
}
else
{
this.SwitchRows(dt,selectedIndex, selectedIndex-1);
}
break;
case "SelectDown":
if( selectedIndex == dt.Rows.Count-1)
{
this.LWarning.Text = "<a class='warning' >" +
"Botton Row can not be moved down, there is no hell</a>";
}
else
{
this.SwitchRows(dt,selectedIndex, selectedIndex+1);
}
break;
case "SelectGoto":
string _index = ((TextBox)e.Item.FindControl("gotowhere")).Text;
if(this.isGoodIndex(_index))
{
int index = int.Parse(_index);
this.dtGoTo(dt, selectedIndex, index);
}
break;
}
this.throwBackDt(dt);
dTtoXml(dt, this._filePath,this._xmlStyle, this._XMLdtTag,this._XMLdrTag);
DataView dv = dt.DefaultView;
dv.Sort = "Id";
this.DataGrid1.DataSource = dv;
this.DataGrid1.DataBind();
}
Switch rows
private void SwitchRows(DataTable _dt, int i, int j)
{
object[] _iRow = _dt.Rows[i].ItemArray;
object[] _jRow = _dt.Rows[j].ItemArray;
_dt.Rows[i].ItemArray = _jRow;
_dt.Rows[j].ItemArray = _iRow;
}
GOTO
private void dtGoTo(DataTable dt , int curI, int newI)
{
DataRow holder = copyRowAt(curI, dt);
dt.Rows.RemoveAt(curI);
this.reorderId(dt);
dt.Rows.InsertAt(holder, newI);
this.reorderId(dt);
this.throwBackDt(dt);
dTtoXml(dt, this._filePath,this._xmlStyle, this._XMLdtTag,this._XMLdrTag);
this.DataGrid1.DataSource = dt.DefaultView;
this.DataGrid1.DataBind();
}
Thanks
Thanks for million of articles from web.
It is not really good code.....yet...
Thank you for Viewing...