PDA

View Full Version : سوال: مرتب کردن دیتاگریدویو با کلیک روی هدر ستونی از نوع رشته البته حاوی عدد؟



طبیب دل
شنبه 16 شهریور 1392, 17:24 عصر
با سلام به دوستان
من یه دیتاگریدویو دارم که اطلاعاتش رو از بانک میخونه یکی از ستونها فقط حاوی عدد ولی فیلدش از نوع رشته در جدول بانک تعریف شده چطوری میشه کاری کرد که با کلیک روی هدر اون ستون اطلاعات به ترتیب عدد مشخص بشه؟
با تشکر

farhad.k.t
شنبه 16 شهریور 1392, 19:02 عصر
دوست عزیز بهتر است که یک کامبوباکس برای مرتب کردن جدولتون بسازید و نام فیلد هایی را که می خواهید جدول براساس آن مرتب شود را در آن وارد کنید،سپس در قسمت commandtext بنویسید ORDER BY FIELD ، سپس آیتم انتخاب شده در کامبوباکس را به عنوان فیلد انتخاب شده به جای FIELDبعد از دستورORDER BY قرار دهید.
در ضمن با توجه به این که شما فیلدها را از نوع رشته ای تعریف کرده اید ،دچار مشکل خواهید شد ، بنابر این بهتر است فیلدی را که می خواهید بر اساس آن جدول را مرتب کنید از نوع عددی در نظر بگیرید.

mousa1992
یک شنبه 17 شهریور 1392, 01:38 صبح
چرا وقتی داده هاش عددی هست کارکتری در نظر گرفتی ؟!
خب همین باعث شده که توی sort کردن به مشکل بربخوری
2 راه :
1 - نوع رو به int تغییر بده
2 - خودت متد sort بنویسی ( چون نا هماهنگی هایی وجود داره توی رشته ها برای مثال "2" بزرگتر از "12" هست )

طبیب دل
یک شنبه 17 شهریور 1392, 08:36 صبح
چرا وقتی داده هاش عددی هست کارکتری در نظر گرفتی ؟!

من مجبور بودم چون مشتری میخواست در بعضی موارد عدد هم بتونه وارد کنه. . . چه کار باید میکردم؟

setareh masompoor
یک شنبه 17 شهریور 1392, 09:28 صبح
خب چرا از کنترل janus استفاده نمیکنی؟
لازم نیست واسه مرتب کردن یا فیلترینگ کد بنویسی

طبیب دل
یک شنبه 17 شهریور 1392, 10:08 صبح
خب چرا از کنترل janus استفاده نمیکنی؟
لازم نیست واسه مرتب کردن یا فیلترینگ کد بنویسی

کامپوننتش ندارم میشه لینک دانلودش بزاری؟ نسخه آزمایشی نباشه تو روخدا نمی خوام دو روز دیگه به مشکل بخورم . تا حالا هم ازش استفاده نکردم سخت یا ساده؟

مهرداد صفا
یک شنبه 17 شهریور 1392, 10:50 صبح
با سلام به دوستان
من یه دیتاگریدویو دارم که اطلاعاتش رو از بانک میخونه یکی از ستونها فقط حاوی عدد ولی فیلدش از نوع رشته در جدول بانک تعریف شده چطوری میشه کاری کرد که با کلیک روی هدر اون ستون اطلاعات به ترتیب عدد مشخص بشه؟
با تشکر
با سلام.
از cast برای تبدیل رشته به int استفاده کنید. به این صورت:


"select cast(field1 as int) x from test1 order by x"


در مثال زیر یک جدول به نام test1 با یک فیلد از نوع NvarChar ساخته می شود و اعداد از 1000 تا 0 به صورت رشته در آن قرار می گیرد. سپس با استفاده از cast رشته به صورت عدد انتخاب شده و از 0 تا 1000 مرتب می شود:

//بسم الله الرحمن الرحیم
//اللهم صل علی محمد و آل محمد

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
using ( SqlConnection connection = new SqlConnection("server=.\\sqlExpress;integrated security=true;")){
using (SqlCommand command = new SqlCommand("", connection))
{
Action<string> Execute = (sql) => { command.CommandText = sql; command.ExecuteNonQuery(); };
connection.Open();
Execute("if (exists(select * from sys.tables where name ='test1')) drop table test1;");
Execute("create table test1 (field1 NVarChar(20));");
for (int i = 1000; i > 0; i--)
Execute("insert test1 values ('" + i.ToString() + "');");
command.CommandText = "select cast(field1 as int) x from test1 order by x";
dataGridView1.DataSource = new DataTable();
(dataGridView1.DataSource as DataTable).Load(command.ExecuteReader());
connection.Close();
}//end using comand
}//end using connection
}
}
}

طبیب دل
یک شنبه 17 شهریور 1392, 11:00 صبح
با سلام.
از cast برای تبدیل رشته به int استفاده کنید. به این صورت:


"select cast(field1 as int) x from test1 order by x"



اینکارو کردم ولی فقط تو لود اولیه مرتب شدس وفتی روی هدر ستون کلیک میکنی بر اساس رشته مرتب میکنه. . .

setareh masompoor
یک شنبه 17 شهریور 1392, 11:23 صبح
http://barnamenevis.org/showthread.php?376715-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA-%D9%87%D8%A7%DB%8C-Janus-Winforms-Controls-Suite-4.0&highlight=janus

و این لینک
http://barnamenevis.org/showthread.php?417027-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D8%A8%D8%A7%D9%84%D8%A7%DB%8C-%DA%AF%D8%B1%DB%8C%D8%AF-%D8%AC%D8%A7%D9%86%D9%88%D8%B3-Janus-Grid&highlight=janus
اینا به دردت میخوره فکر کنم

طبیب دل
یک شنبه 17 شهریور 1392, 11:56 صبح
http://barnamenevis.org/showthread.php?376715-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA-%D9%87%D8%A7%DB%8C-Janus-Winforms-Controls-Suite-4.0&highlight=janus

و این لینک
http://barnamenevis.org/showthread.php?417027-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D8%A8%D8%A7%D9%84%D8%A7%DB%8C-%DA%AF%D8%B1%DB%8C%D8%AF-%D8%AC%D8%A7%D9%86%D9%88%D8%B3-Janus-Grid&highlight=janus
اینا به دردت میخوره فکر کنم

خیلی ممنون. ببینید گرید خود ویژوال استدیو این قابلیت داره که با کلیک روی هدر هر ستون گرید بر اساس اون مرتب میشه مشکلم اینجاست که فیلد من از نوع nvarchar و مرتب سازی براساس رشته انجام میده. جانوس این مشکل نداره؟

طبیب دل
یک شنبه 17 شهریور 1392, 12:06 عصر
دو تا مسئله:
1- اگه میشه بگید چطوری کرکش کنم؟
2- آیا این ورژن رو vs2008 کار میکنه یا نه؟