PDA

View Full Version : نحوه خواندن کلیه اطلاعات موجود در دیتاگرید



tux-world
سه شنبه 27 دی 1390, 00:37 صبح
دوستان کسی میدونه چطور میشه کل اطلاعات جدول به این صورت که شبیه گرید باشه و سطر به سطر کاربر اطلاعات وارد کنه رو خوند؟

mehdi.mousavi
چهارشنبه 28 دی 1390, 13:44 عصر
دوستان کسی میدونه چطور میشه کل اطلاعات جدول به این صورت که شبیه گرید باشه و سطر به سطر کاربر اطلاعات وارد کنه رو خوند؟

سلام.
لطفا صورت مساله رو دقیق تر توضیح بدید تا پاسخ بدم.

موفق باشید.

tux-world
چهارشنبه 28 دی 1390, 14:16 عصر
مثلا من جدول زیر رو دارم وقتی کاربر جدید رو میزنه یه سطر اضافه میشه و اینپوت ها تو سل ها (TD)جا میگیرن. به این ترتیب هربار که میزنه میتونه رکورد جدید رو وارد کنه. بعد اینکه ثبت رو زد کل جدول رو سطر به سطر بخونه و ثبت کنه. تو خوندن این سطر ها (TR)موندم که اصلا معلوم نیست چند تا باشه

zootos
چهارشنبه 28 دی 1390, 18:44 عصر
خوب یه سوال این انپوت باکس ها همون موقع تو صفحه ایجاد میشن ؟
اگه آره پس باید از live استفاده کنی در ضمن با each تی ار ها رو راحت می تونی بخونی بعد تو دیتا بیس اضافه کنی بع همین راحتی

tux-world
چهارشنبه 28 دی 1390, 20:13 عصر
اینکه باید از live استفاده بشه رو میدونم ولی نتونستم

zootos
پنج شنبه 29 دی 1390, 08:48 صبح
یعنی چی استفاده از live رو نتونستی یا نوشتن each رو؟

zootos
پنج شنبه 29 دی 1390, 09:02 صبح
اینجا رو یه نگا بکن خیلی کمکت می کنه (http://stackoverflow.com/questions/376081/how-to-get-a-table-cell-value-using-jquery)

tux-world
پنج شنبه 29 دی 1390, 10:10 صبح
این جدول رو ببین:

<table id="main"><tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr><tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr><tr>
<td>9</td>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
https://developer.mozilla.org/@api/deki/files/833/=Sample1-tabledom.jpg
ما سه تا سطر داریم و هر سطر به تعداد متغیر ستون ها (TD)رو باید تو یه آرایه بریزم مثلا [][]tbl یه آرایه دو بعدی که در سل اول شماره سطر و در سل دوم محتویات بعد تو فایل دیگه جدا میکنم و تو دیتا میریزم مثلا بشه:

tbl[0][1]='1234'
tbl[1][2]='5678'

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

tux-world
پنج شنبه 29 دی 1390, 10:38 صبح
من تا اینجا پیش اومدم:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script src="jquery.min.js" type="text/javascript"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
var list=new Array();
var i=0;
$('#main tr').each(function() {
i++;
var content=document.getElementsByTagName('td');
for(c=0;c<content.length;c++)
list[i]+=content[c].innerHTML;
});
$('#wq').html(list[1]);
});
</script>

<body>

<table id="main">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
<div id='wq'>OUTPUT=></div>
</body>
</html>

خروجی اینو میده :

undefined123456789

codename.ms0
پنج شنبه 29 دی 1390, 11:31 صبح
tr=0;
td=0;
tbl= new Array();
$("#main tr").each(function(){
tbl[tr] = new Array();
$(this).find('td').each(function(){
tbl[tr][td] = $(this).text();
td++;
});
td=0;
tr++;
});

console.log(tbl)

این پاسخ شماست ولی باید خودت به جواب برسی اینجوری خوب نیست سوال بزاری یکی جواب بده :چشمک:
ضمن تشکر از zootos

mehdi.mousavi
پنج شنبه 29 دی 1390, 12:06 عصر
سلام.
کد فوق اون خروجی رو تولید نمیکنه که شما بهش اشاره کرده بودید (ضمن اینکه از توانایی های jQuery به خوبی بهره نبرده).
برای اینکه دقیقا همون خروجی رو داشته باشید، می تونید بدین شکل عمل کنید:

$(function () {
var output = [];
$('#main tr').each(function (index) {
var item = [];
item[0] = index;
item[index + 1] = $(this).children().text();

output.push(item);
});

console.log(output[0][1]); //1234
console.log(output[1][2]); //5678
});


موفق باشید.

tux-world
پنج شنبه 29 دی 1390, 14:21 عصر
این پاسخ شماست ولی باید خودت به جواب برسی اینجوری خوب نیست سوال بزاری یکی جواب بده :چشمک:
ضمن تشکر از zootos
ممنونم . ولی خوب میبینید تا جاهایی خودم پیش برده بودم و نتونستم برای همین پرسیدم دیگه ;) اگه خودم به جواب رسیده بودم که نمی پرسیدم :چشمک:

tux-world
پنج شنبه 29 دی 1390, 14:28 عصر
ممنون آقای موسوی . یه سوال در این مورد:

console.log(output[0][1]); //1234console.log(output[1][2]); //5678

چرا اندیس ها به این شکل هستند. اینطوری مجبورم برای خوندن تو فایل php باز حلقه بنویسم درسته؟ اینطوری مگه نمیشه نوشت؟

console.log(output[0][1]);
console.log(output[1][1]);
console.log(output[2][1]);
console.log(output[3][1]);

mehdi.mousavi
شنبه 01 بهمن 1390, 10:42 صبح
ممنون آقای موسوی . یه سوال در این مورد:

console.log(output[0][1]); //1234console.log(output[1][2]); //5678

چرا اندیس ها به این شکل هستند. اینطوری مجبورم برای خوندن تو فایل php باز حلقه بنویسم درسته؟ اینطوری مگه نمیشه نوشت؟

console.log(output[0][1]);
console.log(output[1][1]);
console.log(output[2][1]);
console.log(output[3][1]);

سلام.
چرا نشه؟ اتفاقا برای منم عجیب بود که چرا دارید اینکارو می کنید... بسیار خوب، حالا که صورت مساله شسته و رفته شد، میتونید از این کد استفاده کنید:

$(function () {
var output = [];
$('#main tr').each(function (index) {
output.push([index, $(this).children().text()]);
});

console.log(output[0][1]); //1234
console.log(output[1][1]); //5678
});


موفق باشید.

tux-world
شنبه 01 بهمن 1390, 12:52 عصر
واقعا عذر ميخام دوباره ميپرسم. بسيار شرمندم :خجالت:
خروجي الان 1234 ميشه و كاملا درسته. شما تو كدتون كل ستون ها رو يكجا ميخونيد اكه مثلا تو يكيشون 123 باشه تو بقيه هر كودوم چند تا عدد اينطوري جدا كردنشون كه بسيار سخت ميشه. نميشه هر TD اي رو جدا بخونيم؟
فكر كنم اينطوري بايد يه آرايه مثل اين داشته باشيم:
p='123','12','222222222'
حداقلش خوب اينه كه ميدونيم تو هر سطر چي هست

mehdi.mousavi
شنبه 01 بهمن 1390, 13:50 عصر
واقعا عذر ميخام دوباره ميپرسم. بسيار شرمندم :خجالت:
خروجي الان 1234 ميشه و كاملا درسته. شما تو كدتون كل ستون ها رو يكجا ميخونيد اكه مثلا تو يكيشون 123 باشه تو بقيه هر كودوم چند تا عدد اينطوري جدا كردنشون كه بسيار سخت ميشه. نميشه هر TD اي رو جدا بخونيم؟
فكر كنم اينطوري بايد يه آرايه مثل اين داشته باشيم:
p='123','12','222222222'
حداقلش خوب اينه كه ميدونيم تو هر سطر چي هست


ای داد بیداد :))) پس چرا تو پست های قبلی اشاره کردید که خروجی مد نظرتون اینه؟


tbl[0][1]='1234'
tbl[1][2]='5678'

بله، اگر به اعداد بطور جداگانه نیاز داشته باشید، باید هر Cell رو بصورت جداگانه پیمایش کنید... و در نتیجه، دیگه نباید بنویسید خروی مد نظرتون اون دو خط کد بالایی هستش... :)

موفق باشید.

tux-world
شنبه 01 بهمن 1390, 15:45 عصر
درست می فرمایید ولی اصلا حواسم نبود که بگم بابا اگه یه فاصله فقط بین اونا باشه از کجا میفهمی تو هر سل چی بوده و هست. حق با شماست من معذرت میخوام ;)