שימוש ב-TemplateColumnב-DataGrid

davidx

New member
שימוש ב-TemplateColumnב-DataGrid

יש לי את הקוד הבא שמכיל DataGrid עם DropDownList וכפתור:
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" OnItemDataBound="DataGridItemDataBound" CellPadding="4" GridLines="None"> <Columns> <asp:BoundColumn DataField="Column1" HeaderText="Column1" /> <asp:BoundColumn DataField="Column2" HeaderText="Column2" /> <asp:TemplateColumn> <ItemTemplate> <asp:DropDownList ID="ItemDropDown" Runat="server" OnSelectedIndexChanged="DropDownSelectedIndexChanged" /> <asp:Button ID="Button" runat="server" OnClick = "ButtonOnClick" Text="Button" /> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid>​
מה שקורה ה-DataGrid טוען לתוכו DataTable ומוסיף לכל שורה בטבלה כפתור ו-DDL השאלה היא איך אפשר לדעת מתוך ה-Event ה-ButtonOnClick או DropDownSelectedIndexChanged על איזו שורה ביצע המשתמש שינוי (לחיצת כפתור או בחירה בDDL)? כלומר איך מבדילים בין הכפתורים וה-DDL-ים השונים?
 

24sharon

New member
אתה כנראה עובד עם NET 1

ואין לי כ"כ מושג מה צריך לעשות שם. אבל אם אתה רוצה אפשרות לעדכן את הGRID עם DDL, בגריד אתה יוצר EDITTEMPLATE ושם אתה יוצר את הDDL אבל אולי זה לא קיים ב1
 

davidx

New member
אני עובד עם 2

לא כל כך הבנתי מה אתה מתכוון אתה יכול בבקשה לפרט קצת יותר איך עושים את זה
 

24sharon

New member
אז למה שלא תעבוד עם gridview?

datagrid אם אני לא טועה שייך ל1.1 לא?
 

davidx

New member
סבבה

אבל מה האבדל בינם? ואיך זה פותר לי את הבעיה?
 

24sharon

New member
לפני שאני מתחילה...

האם יש לך טבלה, שאתה מכניס אותה לGRID, ואת אחד השדות אתה מעוניין לעדכן באמצעות DDL? מה הלחצן (BUTTON) שהכנסת שם מה תפקידו? אחרי שאבין מה אתה רוצה, אולי יהיה לי את הדרך לפתור
 

davidx

New member
אז ככה

תפקיד ה-GRID במערכת שלי לעביר אותי למסך פרטים מורחבים השורות ב-GRID מכילות פרטים על משתמשים וה-DDL ממתג בין הקטגוריות השונות לאותה השורה ובהתאם לבחירה שתלויה בשורה של הכפתור שאלו המשתמש לחץ ניטענים פרטים נוספים הDDL הרלונטי לטעינת הנתונים הוא ה-DLL שנמצא באותו השורה כמו הכפתור כלומר אם אני משנה באינדקס של DDL בשורה אחת ולוחץ בכפתור בשורה אחרת שינוי שבוצע באינדקס הראשון לא יהווה שום חשיבות לסוג הנתונים שאני יקבל בפרוט
 

24sharon

New member
בבקשה!

הנה הקוד של הגריד
<asp:TemplateField> <ItemTemplate> <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem Value="0" Text="בוקר טוב"></asp:ListItem> <asp:ListItem Value="1" Text="שבת שלום"></asp:ListItem> </asp:DropDownList> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </ItemTemplate> </asp:TemplateField>​
וזה הארוע בעת לחיצה
protected void Button1_Click(object sender, EventArgs e) { Button Button1 = (Button)sender; GridViewRow grdRow = (GridViewRow)Button1.Parent.Parent; DropDownList ddl = (DropDownList)grdRow.FindControl("DropDownList1"); string dropDownListText = ddl.SelectedItem.Value + " " + ddl.SelectedItem; Response.Write( grdRow.Cells[1].Text); Response.Write(dropDownListText); }​
לוכד את הלחצן ולוכד את תיבת הטקסט וכן לוכד את שאר העמודות הקיימות באותה שורה.
 
למעלה