PDA

View Full Version : سوال: نمايش در گريد ويو با سوكت



sajjad1365
یک شنبه 15 اسفند 1389, 23:44 عصر
سلام. من با اين كدها داده ها رو سلكت ميكنم( از سمت برنامه كلاينت با فرستادن پيغام به برنامه سرور) :

byte[] msg = newbyte[60000];
string message = "select" + "#" + textBox9.Text;
msg = Encoding.UTF8.GetBytes(message);
socket.Send(msg);
msg = null;


حالا ميخواستم نتيجه رو در برنامه كلاينت هم در گريد نشان بدم.
لطفا راهنمايي كنين.ممنون

sajjad1365
دوشنبه 16 اسفند 1389, 18:08 عصر
سلام .از دوستان كسي هست منو راهنمايي كنه.
فقط ميخواستم نتيجه در برنامه كلاينت نشان داده بشه. همين
ممنون

Reza_Yarahmadi
دوشنبه 16 اسفند 1389, 21:27 عصر
چند راه برای این کار وجود داره.
یکی اینکه شمت سرور رکوردها رو تک تک بخونید(مثلا با استفاده از DataReader) و به ازا هر رکورد مقدار سلولها رو به برنامه کلاینت بفرستید و سمت برنامه کلاینت مقادیر رسیده شده رو یا به یک DataTable اضافه کنید و یا به هر Collection دیگه ای که استفاده میکنید. این روش بدلیل اینکه تنها داده ها ارسال میشه حجم تطلاعاتی کم است و شبکه رو زیاد مشغول نمیکنه.
راه دیگه اینه که خروجی دستور مورد نظر (سمت سرور) رو توی یک DataTable (یا به هر Collection دیگه ای) بریزید و آبجکت مورد استفاده رو سریالایز (Serialize) و برای کلاینت اراسل کنید. سمت کلاینت هم با دیسریالایز (Deserialize) کردن ، آبجکت ارسالی بدست میاد و این آبجکت رو به گرید بایند کنید. پیاده سازی این روش دردسر کمتری داره ولی چون اضافه بر داده های اصلی ، خصوصیات دیگه آبجکت هم ارسال میشه ، حجم اطلاعات ارسالی روی شبکه بیشتره.

sajjad1365
دوشنبه 16 اسفند 1389, 22:06 عصر
ممنون كه جواب ميدين.
ميشه يه كد كوچولو در اين مورد بزارين(با روش دوم)

Reza_Yarahmadi
دوشنبه 16 اسفند 1389, 22:43 عصر
using System.Runtime.Serialization.Formatters.Binary;
سمت سرور
SqlDataAdapter da = new SqlDataAdapter("Select * From TableName", conn);
DataTable dt = new DataTable();
da.Fill(dt);

MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, dt);

socket.Send(ms.GetBuffer());
سمت کلاینت هم
byte[] buffer = new byte[1024];
int res = socket.Receive(buffer);
MemoryStream ms = new MemoryStream(buffer, 0, res);

BinaryFormatter bf = new BinaryFormatter();
DataTable dt = (DataTable)bf.Deserialize(ms);
(این یه نمونه کد بیشتر نیست ، چون تست نشده احتمال داره درست کارنکنه ، ولی روند کلی همینه)

sajjad1365
سه شنبه 17 اسفند 1389, 15:03 عصر
سلام
من اين كدهارو درسمت سرور نوشتم

SqlConnection myconnect2 = new SqlConnection(connection);
string sql2 = "select From kala where cod='" + array_message[1] + "'";
SqlCommand mycommend2 = new SqlCommand(sql2, myconnect2);
DataTable dt = new DataTable();
SqlDataReader dr;
DataSet ds = new DataSet();

myconnect2.Open();
// mycommend2.ExecuteNonQuery();

//---------------------------------------------------
try
{

SqlDataAdapter da = new SqlDataAdapter("select From kala where cod='" + array_message[1] + "'", connection);
da.Fill(ds);
dt = ds.Tables[0];
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, dt);
sk.Send(ms.GetBuffer());
}
catch
{
Console.WriteLine("---------");
}
myconnect2.Close();

و اين كدهارو در سمت كلاينت

byte[] msg = new byte[60000];
string message = "select" + "#" + textBox9.Text;
msg = Encoding.UTF8.GetBytes(message);
socket.Send(msg);
msg = null;
//--------------------------------------------//
byte[] buffer = new byte[1024];
int res = socket.Receive(buffer);
MemoryStream ms = new MemoryStream(buffer, 0, res);
BinaryFormatter bf = new BinaryFormatter();
DataTable dt = (DataTable)bf.Deserialize(ms);

برنامه اجرا ميشه ولي وقتي سلكت ميكنم برنامه هنگ ميكنه
اصلا اين كدها درسته ؟
البته قسمت سلكتش درسته.

Reza_Yarahmadi
سه شنبه 17 اسفند 1389, 17:36 عصر
به نظر مشکلی نداره ، فقط اون سوکتی که از برنامه سرور داره جواب رو پس میده (sk) همون سوکتیه که کلاینت داره وصل میشه یا سوکتی که سرور داره باهاش گوش میده؟ در صورتیکه این همون سوکتیه که سرور داره گوش میکنه خب اطلاعات برای کلاینت ارسال نمیشه. باید بر اساس سوکت دریافتی اطلاعات پس داده بشه.

sanaz2011
سه شنبه 17 اسفند 1389, 20:51 عصر
با سلام من یک مشکل در رابطه با نحوه نمایش گرید دارم
زمان ویرایش اطلاعات اندازه گرید تغییر میکنه لطفا منو راهنمایی کنید

sajjad1365
سه شنبه 17 اسفند 1389, 21:01 عصر
من كه نتونستم كاري كنم(هنگ ميكنه)
نميشه بيشتر راهنمايي كنين

Reza_Yarahmadi
چهارشنبه 18 اسفند 1389, 19:23 عصر
یه برنامه کلاینت سرور ساده ضمیمه کردم که اساس کاری که میخواید رو انجام میده یه نگاه بهش بندازید.