Beispiel #1
0
        private void UpdateRow()
        {
            InputLanguage.CurrentInputLanguage = _myLanguages[Settings.Default.Know];

            if (gridOneMain.CurrentRow == null)
            {
                return;
            }
            var idstring    = gridOneMain.CurrentRow.Cells[0].EditedFormattedValue.ToString();
            var feseq       = gridOneMain.CurrentRow.Cells[1].EditedFormattedValue.ToString();
            var zhuyin      = gridOneMain.CurrentRow.Cells[2].EditedFormattedValue.ToString();
            var traditional = gridOneMain.CurrentRow.Cells[3].EditedFormattedValue.ToString();
            var english     = gridOneMain.CurrentRow.Cells[4].EditedFormattedValue.ToString();
            //var numpinyin = gridOneMain.CurrentRow.Cells[5].EditedFormattedValue.ToString();
            //var critpinyin = gridOneMain.CurrentRow.Cells[6].EditedFormattedValue.ToString();
            //var simplified = gridOneMain.CurrentRow.Cells[7].EditedFormattedValue.ToString();
            //var cji = gridOneMain.CurrentRow.Cells[8].EditedFormattedValue.ToString();

            int idint;
            var validid = Int32.TryParse(idstring, out idint);

            if (!validid)
            {
                Status.Text = @"Unable to convert row ID from string to int32. Should not have happened!";
                //return;
            }

            int baseseq;
            var validbase = Int32.TryParse(txtFEsequence.Text, out baseseq);

            if (!validbase)
            {
                Status.Text = @"F E Sequence not a valid integer. Sorry!";
                return;
            }

            int intfeseqoffset;
            var validintfeseq = Int32.TryParse(feseq, out intfeseqoffset);

            if (!validintfeseq)
            {
                Status.Text = @"Updated F E Sequence not a valid integer!. Sorry.";
                return;
            }

            using (var d3K = new Dictionary3000DataContext(Settings.Default.ChineseStudyConnection))
            {
                var trads = from q in d3K._3000_Characters
                            where q.ID == idint
                            select q;

                foreach (var trad in trads)
                {
                    if (baseseq == intfeseqoffset / 100)
                    {
                        var clippedFEseq = intfeseqoffset.ToString(CultureInfo.InvariantCulture);
                        if (clippedFEseq.Length < 1 || clippedFEseq.Length > 6)
                        {
                            Status.Text = @"Updated F E Sequence not a valid length!. Sorry.";
                            return;
                        }

                        switch (clippedFEseq.Length)
                        {
                        case 1:
                            trad.FEseq = "00000" + clippedFEseq;
                            break;

                        case 2:
                            trad.FEseq = "0000" + clippedFEseq;
                            break;

                        case 3:
                            trad.FEseq = "000" + clippedFEseq;
                            break;

                        case 4:
                            trad.FEseq = "00" + clippedFEseq;
                            break;

                        case 5:
                            trad.FEseq = "0" + clippedFEseq;
                            break;

                        case 6:
                            trad.FEseq = clippedFEseq;
                            break;
                        }
                    }
                    else
                    {
                        var clippedFEseq = intfeseqoffset == 0 ? 0.ToString(CultureInfo.InvariantCulture) : ((baseseq * 100) + intfeseqoffset).ToString(CultureInfo.InvariantCulture);

                        switch (clippedFEseq.Length)
                        {
                        case 1:
                            trad.FEseq = "00000" + clippedFEseq;
                            break;

                        case 2:
                            trad.FEseq = "0000" + clippedFEseq;
                            break;

                        case 3:
                            trad.FEseq = "000" + clippedFEseq;
                            break;

                        case 4:
                            trad.FEseq = "00" + clippedFEseq;
                            break;

                        case 5:
                            trad.FEseq = "0" + clippedFEseq;
                            break;

                        case 6:
                            trad.FEseq = clippedFEseq;
                            break;
                        }
                    }

                    trad.Zhuyin      = zhuyin;
                    trad.Traditional = traditional;
                    trad.English     = english;
                    //trad.NumPinyin = numpinyin;
                    //trad.CritPinyin = critpinyin;
                    //trad.Simplified = simplified;
                    //trad.Cji = cji;

                    d3K.SubmitChanges();
                }
            }

            gridOneMain.Rows.Clear();

            using (var d3K = new Dictionary3000DataContext(Settings.Default.ChineseStudyConnection))
            {
                var trads = from q in d3K._3000_Characters
                            where q.Traditional.Contains(txtMainCharacter.Text)
                            orderby q.FEseq
                            select q;

                foreach (var trad in trads)
                {
                    var fePrefix       = txtFEsequence.Text;
                    var feFull         = trad.FEseq.ToString(CultureInfo.InvariantCulture);
                    var fePrefixLength = fePrefix.Length;

                    if (!chkByPass.Checked && trad.FEseq != "0" &&
                        ((feFull.Substring(0, fePrefixLength) != fePrefix) || (feFull.Length != fePrefixLength + 2)))
                    {
                        continue;
                    }
                    object[] row =
                    {
                        trad.ID.ToString(CultureInfo.InvariantCulture), trad.FEseq,   trad.Zhuyin,
                        trad.Traditional,                               trad.English, trad.NumPinyin,trad.CritPinyin,trad.Simplified,
                        trad.Cji
                    };
                    gridOneMain.Rows.Add(row);
                }
            }
        }