سیو دیتاگرید با Xml

بازدید50.5kپست ها14آخرین فعالیت7 سال پیش
0
0

سلام من یه دیتا گرید دارم کد زیر رو هم براش تعیین کردم اما نه سیو میکنه نه لودش میکنه
مشکلش کجاس؟
مبتدیم:ninja:        

DataTable table = CreateEmptyTable();

       static DataTable CreateEmptyTable()
       {
           DataTable table = new DataTable();
           table.Columns.Add("Questions", typeof(string));
           table.Columns.Add("Answers", typeof(string));
           table.TableName = "Table";
           return table;
       }
       private void  Form1_Load(object sender, EventArgs e)
       {
           // Load DataTable
           table = CreateEmptyTable();
           dataGridView1.DataSource = table;

           // Load DataGridView
           try
           {
               table.ReadXml("r.db");
               dataGridView1.DataSource = table;
           }
           catch { }

       }

       private void Form1_FormClosing(object sender, FormClosingEventArgs e)
       {
           // Save DataGridView
           try
           {

              table.WriteXml("r.db", XmlWriteMode.IgnoreSchema);
           }
           catch { }
آخرین ویرایش: 14-10-2014 ساعت 19:15، توسط رضا رمضانپور
0

سلام
داداش کدت مشکلی نداره کار میکنه
هیچوقت catch رو خالی نذار چون اینطوری اگر خطایی بوجود بیاد نمایش داده نمیشه اگر باز دیدی نمیشه try و catch رو پاک کن امتحان کن اگر خطا داد متنش رو بذار اینجا.
Daniel

0

سلام
پروژه پیوست شد
پسوورد : [url]www.softafzar.net[/url]

0

> سلام پروژه پیوست شد پسوورد : [url]www.softafzar.net[/url]
سلام.ممنون از جواباتون.اين پروژه اي كه شما گذاشتين سيو ميكنه اما لود نميكنه.خيلي عالي بود.اگه ميشه اين قسمتشم درست كنيد
0

alireza_kaka همونطور که علیرضای عزیز(daniel) گفت کدی که گذاشتی مشکل نداره منم تست کردم جواب داد.
جواب شما اینجاست:
[url]http://www.softafzar.net/thread954.html/#post2054[/url]

0

> alireza_kaka همونطور که علیرضای عزیز(daniel) گفت کدی که گذاشتی مشکل نداره منم تست کردم جواب داد. جواب شما اینجاست: [url]http://www.softafzar.net/thread954.html/#post2054[/url]
ممنون متوجه شدم.اما واسم جواب نداد.عوضش جناب pashmak يه پروژه گذاشتن كه كارآمدتر ميشه قسمت لودش رو نگاه كنيد ببينيد مشكلش كجاست.سيو ميكنه اما لودش نميكنه.متشكرم
0

درودی دوباره
کد درست هستش ، فقط من یک چیزیو فراموش کردم که اگه به کد ذخیره نگاهی میکردی میفهمیدی چیه که من یادم رفته بنویسمش!

من یادم رفته بود که Pashmak.XmlDoc رو درست تعریف کنم !
[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
[/CSHARP]
یعنی اینجا :

[CSHARP]
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
[/CSHARP]

باید این شکلی بشه

[CSHARP]
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
[/CSHARP]

موفق باشی

0

خيلي ممنون Pashmak جان حل شد

0

ميشه واسه ديتا گريد تك ستونه هم كدش رو بزاريد؟

0

دوست عزیز شما میتوانید با کم و زیاد کردن Column ها مثله آب خوردن اونها رو ذخیره یا بازیابی کنید!
مثال
اگه شما این کد رو :
[CSHARP]
XmlElement XCLM1 = Pashmak.XmlDoc.CreateElement("Column1");
XmlElement XCLM2 = Pashmak.XmlDoc.CreateElement("Column2");
XCLM1.InnerText = dataGridView1.Rows[i].Cells[0].Value.ToString();
XCLM2.InnerText = dataGridView1.Rows[i].Cells[1].Value.ToString();
[/CSHARP]
به :
[CSHARP]
XmlElement XCLM1 = Pashmak.XmlDoc.CreateElement("Column1");
XCLM1.InnerText = dataGridView1.Rows[i].Cells[0].Value.ToString();
[/CSHARP]
تغییر بدهید ، آیا سخت میباشد؟
یا برای بازیابی :
[CSHARP]
for (int t = 0; t < ItemsList[j].ChildNodes.Count; t++)
{
if (ItemsList[j].ChildNodes[t].Name == "Column1")
A = ItemsList[j].ChildNodes[t].InnerText;
else if (ItemsList[j].ChildNodes[t].Name == "Column2")
B = ItemsList[j].ChildNodes[t].InnerText;
}
[/CSHARP]
به
[CSHARP]
for (int t = 0; t < ItemsList[j].ChildNodes.Count; t++)
{
if (ItemsList[j].ChildNodes[t].Name == "Column1")
A = ItemsList[j].ChildNodes[t].InnerText;
}
[/CSHARP]
تغییر دهید !
همین

0

ممنون اما اینکارو کردم به یه مشکل برخوردم.به هر حال مرسی

0

بفرما
برای ذخیره :
[CSHARP]
Pashmak.XmlDoc = new XmlDocument();
XmlElement XRootA = Pashmak.XmlDoc.CreateElement("Pashmak");
XmlElement XRootB = Pashmak.XmlDoc.CreateElement("Softafzar");
{
XmlElement XItems = Pashmak.XmlDoc.CreateElement("Items");
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
try
{
XmlElement XItem = Pashmak.XmlDoc.CreateElement("Item");
XmlElement XCLM1 = Pashmak.XmlDoc.CreateElement("Column1");
XCLM1.InnerText = dataGridView1.Rows[i].Cells[0].Value.ToString();
XItem.AppendChild(XCLM1);
XItems.AppendChild(XItem);
}
catch { }
}
XRootB.AppendChild(XItems);
XRootA.AppendChild(XRootB);
}
Pashmak.XmlDoc.AppendChild(XRootA);
SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (.db)|.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
string filePath = "";
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(Pashmak.XmlDoc.InnerXml);
filePath = sd.FileName;
label1.Text = "Database Saved on\n" + filePath;
save.Close();
}
[/CSHARP]

برای بازیابی

[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (.db)|.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
Pashmak.XmlDoc = new XmlDocument();
try
{
Pashmak.XmlDoc.LoadXml(data);
}
catch
{
return;
}
if (Pashmak.XmlDoc == null || Pashmak.XmlDoc.InnerXml == "")
return;
XmlNode XmlRoot = Pashmak.XmlDoc.GetElementsByTagName("Pashmak")[0];
for (int i = 0; i < XmlRoot.ChildNodes.Count; i++)
{

                XmlNode XmlRChild = XmlRoot.ChildNodes[i];
                switch (XmlRChild.Name)
                {
                    case "Softafzar":
                        if (XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items") != null &&
                            XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items/Item") != null)
                        {
                            XmlNodeList ItemsList = XmlRChild.SelectNodes("//Pashmak/Softafzar/Items/Item");
                            for (int j = 0; j < ItemsList.Count; j++)
                            {
                                string A = "";
                                for (int t = 0; t < ItemsList[j].ChildNodes.Count; t++)
                                {
                                    if (ItemsList[j].ChildNodes[t].Name == "Column1")
                                        A = ItemsList[j].ChildNodes[t].InnerText;
                                }
                                dataGridView1.Rows.Add(A);
                            }
                        }
                        break;
                }
            }
        }

[/CSHARP]

0

واقعا شرمنده.اما نگاه کنید اینجوری میشه.دیتا گرید سمت چپی موقع لود یک ردیف رو خالی میذاره

0

با سلام
در ذخیره کردن ، اخرین ردیف را ذخیره نمی کند ، یا اگر فقط یک ردیف داشته باشیم ان را ذخیره نمی کند مشکل کجاست.
با تشکر

0

همین الان امتحان کردم، کدها درست بودن، اما این رو امتحان کنید:
ذخیره:
[CSHARP]
XmlDocument XmlDoc = new XmlDocument();
XmlElement XRootA = XmlDoc.CreateElement("Pashmak");
XmlElement XRootB = XmlDoc.CreateElement("Softafzar");
{
XmlElement XItems = XmlDoc.CreateElement("Items");
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
try
{
XmlElement XItem = XmlDoc.CreateElement("Item");
XmlElement XCLM1 = XmlDoc.CreateElement("Column1");
XCLM1.InnerText = dataGridView1.Rows[i].Cells[0].Value.ToString();
XItem.AppendChild(XCLM1);
XItems.AppendChild(XItem);
}
catch { }
}
XRootB.AppendChild(XItems);
XRootA.AppendChild(XRootB);
}
XmlDoc.AppendChild(XRootA);
SaveFileDialog sd = new SaveFileDialog();
sd.Filter = "SoftAfzar Database (.db)|.db";
Random randomize = new Random();
sd.FileName = "SoftAfzar Database" + randomize.Next();
string filePath = "";
if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamWriter save = new StreamWriter(sd.FileName);
save.Write(XmlDoc.InnerXml);
filePath = sd.FileName;
label1.Text = "Database Saved on\n" + filePath;
save.Close();
}
[/CSHARP]

بازیابی:
[CSHARP]
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SoftAfzar Database (.db)|.db";
od.FileName = "SoftAfzar Database.db";
if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
StreamReader loaddb = new StreamReader(od.FileName);
string data = loaddb.ReadToEnd();
loaddb.Close();
XmlDocument XmlDoc = new XmlDocument();
try
{
XmlDoc.LoadXml(data);
}
catch
{
return;
}
if (XmlDoc == null || XmlDoc.InnerXml == "")
return;
XmlNode XmlRoot = XmlDoc.GetElementsByTagName("Pashmak")[0];
for (int i = 0; i < XmlRoot.ChildNodes.Count; i++)
{

                XmlNode XmlRChild = XmlRoot.ChildNodes[i];
                switch (XmlRChild.Name)
                {
                    case "Softafzar":
                        if (XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items") != null &&
                            XmlRChild.SelectSingleNode("//Pashmak/Softafzar/Items/Item") != null)
                        {
                            XmlNodeList ItemsList = XmlRChild.SelectNodes("//Pashmak/Softafzar/Items/Item");
                            for (int j = 0; j < ItemsList.Count; j++)
                            {
                                string A = "";
                                for (int t = 0; t < ItemsList[j].ChildNodes.Count; t++)
                                {
                                    if (ItemsList[j].ChildNodes[t].Name == "Column1")
                                        A = ItemsList[j].ChildNodes[t].InnerText;
                                }
                                dataGridView1.Rows.Add(A);
                            }
                        }
                        break;
                }
            }
        }

[/CSHARP]

سوال برنامه نویسی دارید؟

هیچ وقت در پرسیدن سوال شک نکنید

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.