نوشته شده توسط
طبیب دل
با سلام به دوستان
من یه دیتاگریدویو دارم که اطلاعاتش رو از بانک میخونه یکی از ستونها فقط حاوی عدد ولی فیلدش از نوع رشته در جدول بانک تعریف شده چطوری میشه کاری کرد که با کلیک روی هدر اون ستون اطلاعات به ترتیب عدد مشخص بشه؟
با تشکر
با سلام.
از 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
}
}
}