Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: lỗi khi lấy giá trị ngày trên listview vào datetimepicker

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    Mặc định lỗi khi lấy giá trị ngày trên listview vào datetimepicker

    khi tôi chọn DL trên listview và gán vào datetimepicker thì đến những giá trị ngày lớn hơn 12 nó báo lỗi
    ví dụ có giá trị ngày trên listview là 13-03-1983 thì nó báo lỗi String was not recognized as a valid DateTime mặc dù tôi đã đặt thuộc tính .customformat của datetimepicker là dd-MM-yyyy
    tôi nghĩ cái datetimepicker nó luôn chỉ hiểu kiểu tháng ngày năm cho dù định dạng thế nào đi nữa nên nó mới báo lỗi như vậy,ko biết phải giải quyết sao bây giờ
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    27

    Dùng DateTime.TryParse(strDate) trước khi gán vào DateTimePicker.

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    ko ăn thua bạn ơi
    cái tryparse property có 2 tham số,mà tôi lại ko biết tham số thứ 2 nên truyền giá trị gì,tôi dùng parse property có 1 tham số là chuỗi datetime thì vẫn báo lỗi tương tự
    đây là cái chuỗi datetime tôi lấy từ listview ListView1.Items[selNdx].SubItems[3].Text
    PHP Code:
    if (ListView1.SelectedIndices.Count <= 0)
                {
                    return;
                }
                
    int selNdx ListView1.SelectedIndices[0];
                if (
    selNdx >= 0)
                {
                    
    dTPNgaysinh.Text =DateTime.Parse(ListView1.Items[selNdx].SubItems[3].Text).ToString();
                } 
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    17

    Anh thử code này xem:
    Code:
    if (listView1.SelectedIndices.Count <= 0)
                {
                    return;
                }
                int selNdx = listView1.SelectedIndices[0];
                if (selNdx >= 0)
                    
                {
                    dateTimePicker1.Text = Convert.ToDateTime(listView1.Items[selNdx].SubItems[3].Text).ToString();
                }
    Do không có điều kiện,em thử trên listbox , chắc là listview sẽ thành công
    AI NÂNG MÌNH LÊN SẼ BỊ HẠ XUỐNG VÀ AI HẠ MÌNH XUỐNG SẼ ĐƯỢC NÂNG LÊN


  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    cũng ko ăn thua đâu em ơi,anh thử tất cả các cách rồi
    bây giờ bỏ qua cái listview đi,đừng quan tâm nhé
    giả sử có đoạn code này
    Code:
    string strDate="13-03-1983";
    //dateTimePicker1.text=strDate;
    dateTimePicker1.text=convert.todatetiem(strDate).tostring();
    vẫn lỗi là sao,cho dù có đặt kiểu hiển thị của datetimepicker là gì đi nữa cũng có cái lỗi tương tự như trên
    thực sự là bó tay với cái dateTimePicker này rồi,nếu để giá trị trên listview đúng như giá trị trong database thì ko có vấn đề gì,set customformat="dd-MM-yyyy" cho dateTimePicker thì nó chuyển về đúng,nhưng khổ nỗi trong database field ngaythang lại chứa cả thời gian nên khi hiện lên listview thì xấu quá,định dạng lại trên listview cho về "dd-MM-yyyy" thì lại lỗi với cái dateTimePicker
    có cách giải quyết là mỗi lần selected index trên listview thì dùng câu truy vấn với điều kiện id được lấy từ 1 cột trên listview,lấy được DL ngaythang nguyên thủy(có cả phần thời gian trong đó) rồi đặt customformat="dd-MM-yyyy" sẽ cho kết quả mong muốn và ko có vấn đề gì,nhưng như thế thì mỗi lần kick vào listview lại phải kết nối với database để lấy DL,mà anh lại muốn lấy trực tiếp giá trị ngaythang trên listview đưa vào dateTimePicker,vừa ko phải kết nối,hơn nữa CT chạy đỡ chậm hơn,nhưng cái lỗi kia làm đau đầu quá
    Đã được chỉnh sửa lần cuối bởi thanhlv : 28-10-2007 lúc 02:47 PM.
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    27

    Mặc định lỗi khi lấy giá trị ngày trên listview vào datetimepicker

    Oh mein God, thuộc tính Text là caption của datetimepicker mà bạn. Muốn set ngày cho datetimepicker bạn dùng thuộc tính Value của nó ví dụ:
    dateTimePicker1.Value = DateTime.Parse("13-03-1983");

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    Trích dẫn Nguyên bản được gửi bởi rongchaua Xem bài viết
    Oh mein God, thuộc tính Text là caption của datetimepicker mà bạn. Muốn set ngày cho datetimepicker bạn dùng thuộc tính Value của nó ví dụ:
    dateTimePicker1.Value = DateTime.Parse("13-03-1983");
    ừ,phiền bạn vất vả trả lời quá,nhưng tôi thử hết các kiểu gán rồi,kể cả dùng .value
    hơn nữa,nếu ta chỉ gán chuỗi "string" vào .text của dateTimePicker1 mà nó còn ko nhận và nói sai kiểu datetime (cái control này nguyên tắc quá) thì làm sao mà gán vào thuộc tính .value của nó được(nếu nó ko báo thêm 1 cái lỗi nào nữa là còn may đấy)
    với lại như bài đầu tiên mình đã nói,chỉ có những giá trị có phần ngày lớn hơn 12 thì nó mới sinh cái lỗi này,vì vậy đâu có liên quan đến .value hay . text
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

  8. #8
    Ngày gia nhập
    10 2007
    Bài viết
    2

    Mặc định DateTimePicker problem solved

    Có 2 cách giải quyết"
    - Cách 1: bạn cứ truyền vào theo định dạng "MM-dd-yyyy", vì format cho DateTimePicker vẫn là "dd-MM-yyyy" nên dù truyền theo định dạng trên thì nó vẫn hiển thị theo ngày tháng năm. Tức là:
    dateTimePicker1.Value=Convert.ToDateTime("13-02-1983"); //cái này lỗi
    dateTimePicker1.Value=Convert.ToDateTime("02-13-1983"); //không lỗi

    - Cách 2: nếu bạn vẫn muốn dùng chuỗi "13-02-1983" thì nên dùng đối tượng CultureInfo trong namespace System.Globalization như sau:
    using System.Globalization;
    . . .
    . . .
    string s = "13-02-1983";
    CultureInfo vn = new CultureInfo("vi-VN");
    dateTimePicker1.Value=Convert.ToDateTime(s,vn);

    Thân.

  9. #9
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Dưới đây là source code của property Text và Value của DateTimePicker control. Cậu thanhlv xem thử để phát hiện mình sai ở đâu:
    Code:
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced)]
    public override string Text
    {
        get
        {
            return base.Text;
        }
        set
        {
            if ((value == null) || (value.Length == 0))
            {
                this.ResetValue();
            }
            else
            {
                this.Value = DateTime.Parse(value, CultureInfo.CurrentCulture);
            }
        }
    }
    
    [Bindable(true), RefreshProperties(RefreshProperties.All), SRDescription("DateTimePickerValueDescr"), SRCategory("CatBehavior")]
    public DateTime Value
    {
        get
        {
            if (!this.userHasSetValue && this.validTime)
            {
                return this.creationTime;
            }
            return this.value;
        }
        set
        {
            bool flag = !DateTime.Equals(this.Value, value);
            if (!this.userHasSetValue || flag)
            {
                if ((value < this.MinDate) || (value > this.MaxDate))
                {
                    throw new ArgumentOutOfRangeException("Value", SR.GetString("InvalidBoundArgument", new object[] { "Value", FormatDateTime(value), "'MinDate'", "'MaxDate'" }));
                }
                string text = this.Text;
                this.value = value;
                this.userHasSetValue = true;
                if (base.IsHandleCreated)
                {
                    int wParam = 0;
                    NativeMethods.SYSTEMTIME lParam = DateTimeToSysTime(value);
                    UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1002, wParam, lParam);
                }
                if (flag)
                {
                    this.OnValueChanged(EventArgs.Empty);
                }
                if (!text.Equals(this.Text))
                {
                    this.OnTextChanged(EventArgs.Empty);
                }
            }
        }
    }

  10. #10
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    thực ra tôi mới làm quen với C# ko lâu nên đoạn code của bạn tôi chưa hiểu dùng để làm gì,mong bạn có thể giải thích rõ hơn được ko
    hơn nữa tôi ko sai đâu bạn ơi,chỉ là cái datetimepicker nó ko chấp nhận kiểu DL đó thôi
    thực ra tôi đã giải quyết được vấn đề đó bằng cách khác rồi,nhưng tôi vẫn muốn hỏi bạn 1 việc
    làm thế nào để truyền chuỗi "13-03-1983" vào datetimepicker mà nó ko báo lỗi,chỉ đơn giản vậy thôi
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

Các đề tài tương tự

  1. Lấy dữ liệu trên datetimepicker đưa vào sql?
    Gửi bởi F-18 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 17
    Bài viết cuối: 25-11-2014, 10:06 AM
  2. ADO.NET Gán giá trị null trên datetimepicker control
    Gửi bởi bkmt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 22
    Bài viết cuối: 25-11-2011, 02:14 PM
  3. [Sự kiện]SelectedIndexChanged trên ListView
    Gửi bởi tuanvu_n trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 25-05-2011, 12:42 PM
  4. Cách làm Datetimepicker trên ASP.NET như thế nào?
    Gửi bởi Reallylove2009 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 22-11-2010, 09:16 PM
  5. bắt sự kiện trên ListView?
    Gửi bởi DuyCanh trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 15-10-2009, 09:25 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn