Frågan#1
Jag har ett formulär som ligger i en datagrid där man fyller i en person, finns en person med samma för och efternamn så kommer de som finns i en lista och den nya i en lista under. Detta funkar jätte bra, men när jag går tillbaka till listan och ska edditera en som redan är inlagd och sedan trycker på update så körs kontrollen för att kolla för och eftenamn, hur kan jag lösa detta så att kontrollen ej körs när jag ska edditer en person, kontrollen ska bara köras när jag lägger till en ny person som ej finns i listan.
Kod för min kontroll:
protected void DEDR_Update(object sender, DataGridCommandEventArgs e)
{
DataSet dataSet = LoadWebs();
string CheckResponsible = ((TextBox)e.Item.FindControl("txtResponsible")).Text;
string CheckName = ((TextBox)e.Item.FindControl("txtName")).Text;// hämtar värdet från textboxen i formuläret
string CheckLastName = ((TextBox)e.Item.FindControl("txtLastName")).Text;
string CheckEmail = ((TextBox)e.Item.FindControl("txtEmailAddress")).Text;
string CheckCompany = ((TextBox)e.Item.FindControl("txtCompany")).Text;
string CheckContact = ((DropDownList)e.Item.FindControl("txtContact")).SelectedIndex.ToString();
string Check = CheckName + CheckLastName /*+ CheckEmail*/;
TextBox EditText = null;
DropDownList EditDropDown = null;
bool found = false;
DataTable completeTable = dataSet.Tables[0];
DataTable duplicateTable = new DataTable();
int row = Convert.ToInt32(e.Item.ItemIndex);
foreach(DataColumn col in completeTable.Columns)
duplicateTable.Columns.Add(new DataColumn(col.ColumnName, col.DataType));
for(int i = 0; i < completeTable.Rows.Count; i++)
{
if(completeTable.Rows[i]["Name"].ToString() + completeTable.Rows[i]["LastName"].ToString() /*+ completeTable.Rows[i]["Email"].ToString()*/ == Check)
{
found = true;
duplicateTable.ImportRow(completeTable.Rows[i]);
//NewContactList
Response.Write("Följande person finns redan");
}
}
if(!found)
{
EditText = (TextBox)e.Item.FindControl("txtResponsible");
dataSet.Tables[0].Rows[row]["Responsible"] = EditText.Text;
EditText = (TextBox)e.Item.FindControl("txtName");
dataSet.Tables[0].Rows[row]["Name"] = EditText.Text;
EditText = (TextBox)e.Item.FindControl("txtLastName");
dataSet.Tables[0].Rows[row]["LastName"] = EditText.Text;
EditText = (TextBox)e.Item.FindControl("txtEmailAddress");
dataSet.Tables[0].Rows[row]["Email"]= EditText.Text;
EditText = (TextBox)e.Item.FindControl("txtCompany");
dataSet.Tables[0].Rows[row]["Company"] = EditText.Text;
EditDropDown = (DropDownList)e.Item.FindControl("txtContact");
dataSet.Tables[0].Rows[row]["Contact"] = EditDropDown.SelectedItem.Text;
dataSet.WriteXml(Server.MapPath("webs.xml"));
Session["Webs"] = null;
XmlDataGrid.EditItemIndex = -1;
}
if(found)
{
DataGridContactNew.Visible = true;
list.Visible = true;
DataTable newContactTable = new DataTable();
foreach(DataColumn col in completeTable.Columns)
newContactTable.Columns.Add(new DataColumn(col.ColumnName, col.DataType));
newcontactLabel.Text="Den personen som du försöker lägga till finns redan med samma för och efternamn i lista";
DataRow newRow = newContactTable.NewRow();
newRow["Responsible"] = CheckResponsible;
newRow["Name"] = CheckName;
newRow["LastName"] = CheckLastName;
newRow["Email"] = CheckEmail;
newRow["Company"] = CheckCompany;
newRow["Contact"] = CheckContact;
newContactTable.Rows.Add(newRow);
DataGridContactNew.DataSource = newContactTable;
DataGridContactNew.DataBind();
list.DataSource = duplicateTable;
list.DataBind();
}
XmlDataGrid.DataSource = LoadWebs();
XmlDataGrid.DataBind();
}