【发布时间】:2019-12-28 00:26:46
【问题描述】:
对于那个简单的问题感到抱歉,但我不明白为什么我不能独自解决... 我尝试了许多不同的方式,绑定......但总是大人认为我需要的东西不会在一起...... 现在有了该代码,我的主题将享受 90% 的折扣
*将项目从xml文件加载到数据网格
*改变想法
*保存项目
*通过选择行 - 将项目放入 txtbox + 在画布中创建按钮
*循环抛出所有行
只在数据网格中添加一些项目而不直接将其写入 xml 文件是不会喷射的...
这就是我的代码:
xml 文件:
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<Data Id="1" Name="aaa" Height="25" Width="25" PosTop="25" PosLeft="25" Execute="MsPaint" Image="/Images/Timer_Clock.png" />
<Data Id="2" Name="bbb" Height="25" Width="25" PosTop="100" PosLeft="25" Execute="MsPaint" Image="/Images/Timer_Clock.png" />
<Data Id="3" Name="ccc" Height="44" Width="44" PosTop="25" PosLeft="200" Execute="MsPaint" Image="/Images/Timer_Clock.png" />
<Data Id="4" Name="Se" Height="25" Width="25" PosTop="100" PosLeft="200" Execute="MsPaint" Image="/Images/Timer_Clock.png" />
<Data Id="5" Name="aa54a" Height="25" Width="25" PosTop="50" PosLeft="25" Execute="MsPaint" Image="/Images/Fragezeichen.png" />
<Data Id="6" Name="b54bb" Height="55" Width="55" PosTop="135" PosLeft="25" Execute="MsPaint" Image="/Images/Fragezeichen.png" />
<Data Id="7" Name="csscc" Height="25" Width="25" PosTop="200" PosLeft="200" Execute="MsPaint" Image="/Images/Fragezeichen.png" />
<Data Id="8" Name="Sh54e" Height="25" Width="25" PosTop="225" PosLeft="200" Execute="MsPaint" Image="/Images/Fragezeichen.png" />
<Data Id="9" Name="aggaa" Height="55" Width="55" PosTop="25" PosLeft="300" Execute="MsPaint" Image="/Images/Picture.png" />
<Data Id="10" Name="b45bffb" Height="25" Width="25" PosTop="100" PosLeft="325" Execute="MsPaint" Image="/Images/Picture.png" />
<Data Id="11" Name="ccdc" Height="25" Width="25" PosTop="25" PosLeft="350" Execute="MsPaint" Image="/Images/Picture.png" />
<Data Id="12" Name="S45fe" Height="55" Width="55" PosTop="100" PosLeft="300" Execute="MsPaint" Image="/Images/Picture.png" />
</DocumentElement>
xaml:(我也用直接创建的列写了,但我的 load xml 不明白)
<DataGrid x:Name="datagrid1" SelectionChanged="datagrid1_SelectionChanged" Background="LightGray" RowBackground="LightYellow" AlternatingRowBackground="LightBlue" AutoGenerateColumns="True" CanUserAddRows="True" HorizontalAlignment="Left" Height="125" Margin="137,56,0,0" VerticalAlignment="Top" Width="569">
</DataGrid>
xaml.cs:
private void load(object sender, RoutedEventArgs e)
{
string load_xmlfileName = (txtbx_load_Name.Text + ".xml");
try
{
DataSet dataSet = new DataSet("Data");
dataSet.ReadXml(load_xmlfileName);
datagrid1.ItemsSource = dataSet.Tables[0].DefaultView;
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =" + (ex));
}
}
private void save(object sender, RoutedEventArgs e)
{
string save_xmlfileName = (txtbx_save_Name.Text + ".xml");
try
{
DataTable dt = new DataTable("Data");
dt = ((DataView)datagrid1.ItemsSource).ToTable(); //DataView
string XmlFile = (save_xmlfileName);
dt.WriteXml(XmlFile);
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =" + (ex));
}
}
private void del_all_in_DatagridList(object sender, RoutedEventArgs e)
{
try {
datagrid1.ItemsSource = null;
//datagrid1.Columns.Clear();
//datagrid1.Items.Clear();
datagrid1.Items.Refresh();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =" + (ex));
}
private void loop(object sender, RoutedEventArgs e)
{
try
{
foreach (System.Data.DataRowView dr in datagrid1.ItemsSource)
{
//MessageBox.Show(dr[0].ToString());
txtbx_outbox_Id.Text = (dr[0].ToString());
txtbx_outbox_Name.Text = (dr[1].ToString());
txtbx_outbox_Height.Text = (dr[2].ToString());
txtbx_outbox_Width.Text = (dr[3].ToString());
txtbx_outbox_PosTop.Text = (dr[4].ToString());
txtbx_outbox_PosLeft.Text = (dr[5].ToString());
txtbx_outbox_Execute.Text = (dr[6].ToString());
txtbx_outbox_Image.Text = (dr[7].ToString());
//Thread.Sleep(500); //o,5 Sec
//-------------springe zu *Logging_Sys_Start*----------------------
string Sender = "";
Create_Button_Click(Sender, new RoutedEventArgs());
//---------------------------------------------------------------------
}
}
catch (Exception ex)
{
MessageBox.Show("loop Error-Handling =\r\n" + ex.Message);
}
}
// *************** now the Problem Codes *******************************************************
// **********************************************************************************************
private void New_Datagrid_Row_v1(object sender, RoutedEventArgs e)
{
try
{
DataTable table1 = new DataTable("Data");
//table1.Columns.Add("id");
//table1.Columns.Add("Name");
//table1.Columns.Add("Age");
//table1.Rows.Add(1, "Jack", 18);
table1.Rows.Add(2, "Tim", 18);
// this.datagrid1.ItemsSource = table1;
DataSet set = new DataSet("Data");
set.Tables.Add(table1);
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =" + (ex));
// ***************** * error array longer as the table colums* *************
}
}
private void New_Datagrid_Row_v2(object sender, RoutedEventArgs e)
{
try
{
DataTable table = new DataTable("Data");
table.Columns.Add("Id", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("HeightWidt", typeof(int));
table.Columns.Add("PosTop", typeof(int));
table.Columns.Add("PosLeft", typeof(int));
table.Columns.Add("Execute", typeof(string));
table.Columns.Add("Image", typeof(string));
table.Rows.Add(25, "Indocin", 24, 100, 35, "Notepad", "Images / Timer_Clock.png");
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =" + (ex));
// *********** *no error - do nothing* ****************
}
}
private void New_Datagrid_Row_v3(object sender, RoutedEventArgs e)
{
try
{
string Id = "7";
string Name = "HeyHo";
string Height = "22";
string Width = "22";
string PosTop = "44";
string PosLeft = "44";
string Execute = "Explorer";
string Image = "/Images/Picture.png";
DataTable dft = new DataTable();
// DataColumn column;
DataRow row;
DataView view;
row = dft.NewRow();
row["Id"] = Id;
row["Name"] = Name;
row["Height"] = Height;
row["Width"] = Width;
row["PosTop"] = PosTop;
row["PosLeft"] = PosLeft;
row["Execute"] = Execute;
row["Image"] = Image;
dft.Rows.Add(row);
view = new DataView(dft);
datagrid1.ItemsSource = view;
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =\r\n" + ex.Message);
// ********************** *error Colum "ID" iss not in the table * ********
}
}
private void New_Datagrid_Row_v4(object sender, RoutedEventArgs e)
{
try
{
DataTable dt = new DataTable("Data");
dt.Columns.Add("id", System.Type.GetType("System.String"));
dt.Columns.Add("Name", System.Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr[0] = "a";
dr[1] = "abc";
dt.Rows.Add(dr);
datagrid1.ItemsSource = dt.DefaultView;
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =\r\n" + ex.Message);
// ********* *no error - delete all exist rows + make a new row **********
}
}
private void New_Datagrid_Row_v5(object sender, RoutedEventArgs e)
{
try
{
DataTable dt = new DataTable("Data");
// Method 1
dt.Columns.Add("column0", System.Type.GetType("System.String"));
// Method 2
DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
dt.Columns.Add(dc);
DataRow dr = dt.NewRow();
dr["column0"] = "AX";
dr["column1"] = true;
dt.Rows.Add(dr);
// Doesn't initialize the row
DataRow dr1 = dt.NewRow();
dt.Rows.Add(dr1);
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =\r\n" + ex.Message);
// ****************************** Nothing *******************
}
}
private void New_Datagrid_Row_v6(object sender, RoutedEventArgs e)
{
try
{
DataTable dt = new DataTable("Data");
// dt.Columns.Add("id");
//dt.Columns.Add("Name");
int Id = 7;
string Name = "HeyHo";
int Height = 22;
int Width = 22;
int PosTop = 44;
int PosLeft = 44;
string Execute = "Explorer";
string Image = "/Images/Picture.png";
dt.Rows.Add(Id, Name, Height, Width, PosTop, PosLeft, Execute, Image);
datagrid1.ItemsSource = dt.DefaultView;
}
catch (Exception ex)
{
System.Windows.MessageBox.Show("Error =\r\n" + ex.Message);
// ***************** * error array longer as the table colums* ***********
}
}
错误重放=
**New_Datagrid_Row_v1 * 错误数组长为表格列 * **
**New_Datagrid_Row_v2 * 没有错误 - 没有 * **
**New_Datagrid_Row_v3 * 错误列“ID”不在表中 * **
**New_Datagrid_Row_v4 * 没有错误 - 删除所有存在的行 + 创建一个新行 * **
**New_Datagrid_Row_v5 * 没有 * **
**New_Datagrid_Row_v6 * 错误数组长为表格列 * **
...这就是我所拥有的...我也尝试了绑定,所以我创建了一个集合 - 可以添加简单的新行但我无法加载 - 将其保存到 xml 文件 - 或者我可以' t friggerout 如何做到这一点....
我的大项目在 c# wpf 中,但没有绑定和 mvvm - 所以现在我需要一种简单的方法来做这件事,我可以包含该工作集 - 后来我不会更多地去绑定 mvvm 但现在它太多了重写....
我认为我的大问题是我将所有内容加载到一个数据集中(名称??-从我的 xml 文件中捕获),并且我需要从该数据集中捕获--流任何东西--并将其放入该集合新数据,但我不明白我怎么能做到这一点......或者我需要以其他方式复制孔表项,然后按顺序将新数据集放入并再次放入表中......
感谢 4all 的帮助 :-)
制造
安迪克
【问题讨论】:
-
我完全看不懂问题的措辞。您能否尝试将其简化为一个最小的、可验证的示例,并清楚地说明您期望什么结果以及您得到什么结果?
-
XAML 需要定义列。您没有列,这导致异常:wpf-tutorial.com/datagrid-control/custom-columns