ABA


"איך להעביר DATATABLE מCLASS לעמוד בASP.NET?"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #13053 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13053
ReDevil
חבר מתאריך 1.7.02
118 הודעות
   19:54   12.10.07   
אל הפורום  
  איך להעביר DATATABLE מCLASS לעמוד בASP.NET?  
 
   יצרתי CLASS מיוחד שמחזיק את כל הStored Procedures של הפרוייקט
השאלה היא, איך אני מחזיר את הDATATABLE לעמוד?

הקוד:


public string UserContact(long ID)
{

conn = new SqlConnection(ConnStr);

SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_userContact";
cmd.Connection = conn;

SqlParameter param = new SqlParameter();
param.ParameterName = "@ID_user";
param.SqlDbType = SqlDbType.BigInt;
param.Value = Convert.ToInt64(ID);
cmd.Parameters.Add(param);

SqlDataAdapter ADP = new SqlDataAdapter();
ADP.SelectCommand = cmd;

DataTable DT = new DataTable();

TableRow TRow = null;

try
{
conn.Open();
ADP.Fill(DT);

for (int i = 0; i < DT.Rows.Count; i++)
{
TRow = new TableRow();
TableCell TCell = new TableCell();
TCell.Text = DT.Rows.ToString();

TRow.Cells.Add(TCell);

TCell = new TableCell();
TCell.Text = DT.Rows.ToString();

TRow.Cells.Add(TCell);
}

}
catch (Exception ex)
{
Log.WriteError(ex.Message);
}
finally
{
conn.Close();
}

return TRow;
}

תודה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אם הבנתי אותך נכון, אז ככה: Sn00py  12.10.07 20:45 1
     נראה לי שלא הבנת ReDevil 12.10.07 22:53 2
  אוקי .. תקשיב. lior066 13.10.07 20:33 3
     תודה על העזרה :] ReDevil 15.10.07 18:42 4

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   20:45   12.10.07   
אל הפורום  
  1. אם הבנתי אותך נכון, אז ככה:  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 12.10.07 בשעה 20:46 בברכה, Sn00py
 
* עריכה: סימנתי בכחול את השינויים.

public string UserContact(long ID, out DataTable outDT )
{

conn = new SqlConnection(ConnStr);

SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_userContact";
cmd.Connection = conn;

SqlParameter param = new SqlParameter();
param.ParameterName = "@ID_user";
param.SqlDbType = SqlDbType.BigInt;
param.Value = Convert.ToInt64(ID);
cmd.Parameters.Add(param);

SqlDataAdapter ADP = new SqlDataAdapter();
ADP.SelectCommand = cmd;

DataTable DT = new DataTable();

TableRow TRow = null;

try
{
conn.Open();
ADP.Fill(DT);

for (int i = 0; i < DT.Rows.Count; i++)
{
TRow = new TableRow();
TableCell TCell = new TableCell();
TCell.Text = DT.Rows.ToString();

TRow.Cells.Add(TCell);

TCell = new TableCell();
TCell.Text = DT.Rows.ToString();

TRow.Cells.Add(TCell);
}

}
catch (Exception ex)
{
Log.WriteError(ex.Message);
}
finally
{
conn.Close();
}

outDT = DT;
return TRow;
}

ואז אתה קורא לפונקציה כך:


DataTable dt = new DataTable;
UserContact(1234, out dt)

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ReDevil
חבר מתאריך 1.7.02
118 הודעות
   22:53   12.10.07   
אל הפורום  
  2. נראה לי שלא הבנת  
בתגובה להודעה מספר 1
 
   הקוד אמור להעביר 2 עמודות מהטבלה:

for (int i = 0; i < DT.Rows.Count; i++)
{
TRow = new TableRow();
TableCell TCell = new TableCell();
TCell.Text = DT.Rows[i]["name"].ToString();

TRow.Cells.Add(TCell);

TCell = new TableCell();
TCell.Text = DT.Rows[i]["lastname"].ToString();

TRow.Cells.Add(TCell);
}

הבעיה היא להחזיר את הקוד לעמוד
הכוונה היא שהבעיה בRETURN

מקווה שעכשיו זה ברור יותר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

   20:33   13.10.07   
אל הפורום  
  3. אוקי .. תקשיב.  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 13.10.07 בשעה 20:38 בברכה, lior066
 
מה שלא עשית טוב זה שהפונקצייה תחזיר לך סטרינג במקום טבלה..

public string UserContact(long ID)

אתה צריך לעשות דבר שכזה..

public TableRow UserContact(long ID)

דבר שני אתה עובד כזה מסורבל אני לא מבין למה..

חבל שאתה לא משתמש במעטפת למסד נתונים שלך היה עוזר לך פי 10 יותר נוח , והעבודה ככה ממש אבל ממש פי 10 יותר ארוכה.

קח לדוגמא פונקצייה שלי להחזרה של פרטי משתמש..



Public Function GetUserName(ByVal ID As String) As String
'On Error GoTo err
Dim StrTemp As String = ""
STRSQL = "SELECT * FROM Users where ID=" & ID
If Database.Execute(STRSQL) = "OK" Then
rs = Database.CommandObject.ExecuteReader()
If rs.HasRows = False Then
rs.Close()
Database.close()
Return ""
Exit Function
Else
Do While (rs.Read())
StrTemp = rs("Uname")
Loop
rs.Close()
Database.close()
Return StrTemp
End If
End If

הרוב זה תבנית מוכנה..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ReDevil
חבר מתאריך 1.7.02
118 הודעות
   18:42   15.10.07   
אל הפורום  
  4. תודה על העזרה :]  
בתגובה להודעה מספר 3
 
   בקשר לקוד שרשמת זה בVB או C#?

כי אני עובד דרך C# וזה די שונה ממה שכתבת


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net