PDA

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



manit44
سه شنبه 17 اردیبهشت 1392, 18:23 عصر
سلام
من می خوام بین رکوردها حرکت کنم یعنی 4 دکمه ی next,previous,first,last داشته باشم و در حین حرکت بین این رکوردها اطلاعاتم در text box ها نیز نمایش داده شود باید چکار کنم؟

ممنون

Xcalivorse
سه شنبه 17 اردیبهشت 1392, 18:32 عصر
یک شی از کلاس Binding بساز و اون رو به خاتصیت dataBinding تکس باکست Add کن.

manit44
سه شنبه 17 اردیبهشت 1392, 18:39 عصر
میشه کدشو برام بنویسید؟

khokhan
سه شنبه 17 اردیبهشت 1392, 19:25 عصر
میشه کدشو برام بنویسید؟



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace kala
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
String connect = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\kdbs.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter da;
DataSet ds;
int i = 0;
SqlConnection conn;
private void Form3_Load(object sender, EventArgs e)
{
conn = new SqlConnection(connect);
conn.Open();
da = new SqlDataAdapter("select cost_id,cost_name from moshtari", conn);
SqlCommandBuilder builder = new SqlCommandBuilder(da);
ds = new DataSet();
da.Fill(ds, "moshtari");
textBox2.Text = ds.Tables[0].Rows[i]["cost_id"].ToString();
textBox3.Text = ds.Tables[0].Rows[i]["cost_name"].ToString();
}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
if (ds.Tables[0].Rows.Count > 0)
{

i = 0;

textBox2.Text = ds.Tables[0].Rows[i]["cost_id"].ToString();
textBox3.Text = ds.Tables[0].Rows[i]["cost_name"].ToString();


}
}

private void button4_Click(object sender, EventArgs e)
{
i = ds.Tables[0].Rows.Count - 1;

textBox2.Text = ds.Tables[0].Rows[i]["cost_id"].ToString();
textBox3.Text = ds.Tables[0].Rows[i]["cost_name"].ToString();

}

private void button2_Click(object sender, EventArgs e)
{
if (i < ds.Tables[0].Rows.Count - 1)
{

i++;

textBox2.Text = ds.Tables[0].Rows[i]["cost_id"].ToString();
textBox3.Text = ds.Tables[0].Rows[i]["cost_name"].ToString();

}

else
{

}
}

private void button3_Click(object sender, EventArgs e)
{
if (i == ds.Tables[0].Rows.Count - 1 || i != 0)
{

i--;

textBox2.Text = ds.Tables[0].Rows[i]["cost_id"].ToString();
textBox3.Text = ds.Tables[0].Rows[i]["cost_name"].ToString();

}

else
{

}
}

private void groupBox1_Enter(object sender, EventArgs e)
{

}
}
}

manit44
سه شنبه 17 اردیبهشت 1392, 19:36 عصر
اما سیستم بانک من ADO نیست LINQ هست

khokhan
سه شنبه 17 اردیبهشت 1392, 20:00 عصر
اما سیستم بانک من ADO نیست LINQ هست
توی این لینک یه نمونه هست به نظرم دقیقا چیزیه که شما می خواهید

سورس کد نمونه رو هم گذاشته
http://www.c-sharpcorner.com/uploadfile/dinlov/linq-to-sql-for-data-navigation/

شاد شاد :لبخند:

Mahmoud.Afrad
سه شنبه 17 اردیبهشت 1392, 20:01 عصر
اطلاعات را بریزید داخل یک BindingList . یک BindingSource هم به این لیست متصل کنید. در مرحله بعد تکست باکس ها رو به این بایندینگ سورس متصل کنید. در دکمه ها هم از طریق بایندینگ سورس میتونید به ابتدا ،قبل، بعد و آخر برید.
مثال

Database1Entities db;
BindingList<Tbl> blist;
BindingSource myBindingSource;

public FrmMain()
{
InitializeComponent();

db = new Database1Entities();
blist = new BindingList<Tbl>(db.Tbl.ToList());
myBindingSource = new BindingSource()
{
DataSource = blist
};
txtFirstName.DataBindings.Add("Text", myBindingSource, "FirstName");
txtLastName.DataBindings.Add("Text", myBindingSource, "LastName");
}

private void btnFirst_Click(object sender, EventArgs e)
{
myBindingSource.MoveFirst();
}

private void btnPrevious_Click(object sender, EventArgs e)
{
myBindingSource.MovePrevious();
}

private void btnNext_Click(object sender, EventArgs e)
{
myBindingSource.MoveNext();
}

private void btnLast_Click(object sender, EventArgs e)
{
myBindingSource.MoveLast();
}

manit44
سه شنبه 17 اردیبهشت 1392, 20:31 عصر
database entity تو چه فضای نامی تعریف میشه؟

esafb52
سه شنبه 17 اردیبهشت 1392, 22:31 عصر
شما باید اون رو به عنوان یک آیتم اد کنید ولی برای پرسجو و.........
using System.Linq;

manit44
چهارشنبه 18 اردیبهشت 1392, 00:05 صبح
Database1Entities رو از کجا باید بیارم؟

manit44
چهارشنبه 18 اردیبهشت 1392, 01:31 صبح
من مشکلم حل شد فقط یه چیز دیگه مونده و اون اینکه می خوام همزمان وقتی به رکورد بعدی یا قبلی یا....... میرم grid view هم تغییر کنه

Mahmoud.Afrad
چهارشنبه 18 اردیبهشت 1392, 01:59 صبح
دیتاسورس گریدویو را مساوی شئ بایندینگ سورس بزارید.dataGridView1.DataSource = myBindingSource;

manit44
چهارشنبه 18 اردیبهشت 1392, 02:15 صبح
اگه بخوام عمل sort هم همزمان در گرید ویو و text box انجام بشه چکار باید بکنم؟

manit44
چهارشنبه 18 اردیبهشت 1392, 10:04 صبح
کدم به این صورت هست:

pubsDataContext db = new pubsDataContext();
BindingList<author> blist;
BindingSource mybinding = new BindingSource();
public Form1()
{
InitializeComponent();

blist = new BindingList<author>(db.authors.ToList());
mybinding = new BindingSource()
{
DataSource = blist
};
txtBookName.DataBindings.Add("Text", mybinding, "book_name");
txtBookTitle.DataBindings.Add("Text", mybinding, "book_subject");
txtLastName.DataBindings.Add("Text", mybinding, "au_lname");
txtName.DataBindings.Add("Text", mybinding, "au_fname");
txtPrice.DataBindings.Add("Text", mybinding, "price");

Mahmoud.Afrad
چهارشنبه 18 اردیبهشت 1392, 12:19 عصر
از orderby برای صعودیdb.authors.OrderBy(rec => rec.au_fname).ToList()
و از OrderByDescending برای نزولی مرتب کردن استفاده کنید.db.authors.OrderByDescending(rec => rec.au_fname).ToList()
اینجا بر اساس au_fname مرتب سازی صورت میگیره.

manit44
چهارشنبه 18 اردیبهشت 1392, 12:29 عصر
اما منظور من این نبود منظورم این بود که میخوام وقتی در گرید ویو عمل سورت انجام میدم رکورد سورت شده در text box نمایش داده بشه