28. juni 2003 - 18:20Der er
11 kommentarer og 1 løsning
Genbrug af funktion som styrer Controls
Jeg ønsker at følgende kodestump skal over i en method: for (int i=0;i<dr.FieldCount;i++) { Control thisControl = FindControl(dr.GetName(i)); if (thisControl != null) { if (FindControl(dr.GetName(i)).GetType().Name.Equals("TextBox")) { ((TextBox)FindControl(dr.GetName(i))).Text = dr[dr.GetName(i)].ToString(); } if (FindControl(dr.GetName(i)).GetType().Name.Equals("Label")) { ((Label)FindControl(dr.GetName(i))).Text = dr[dr.GetName(i)].ToString(); }
if (FindControl(dr.GetName(i)).GetType().Name.Equals("FCKeditor")) { ((FCKeditor)FindControl(dr.GetName(i))).Value = dr[dr.GetName(i)].ToString(); } if (FindControl(dr.GetName(i)).GetType().Name.Equals("RadioButtonList")) { ((RadioButtonList)FindControl(dr.GetName(i))).SelectedValue = dr[dr.GetName(i)].ToString(); } } }
Jeg har lavet det sådan, fordi ID'erne i controls har det samme navn som db-felterne, så det er nemmere at tildele værdierne via denne ovenstående metode. Men jeg vil gerne have det over i en klasse CMSUtility.GetValues(ref Page,dr). Dog ser det ud til at Page ikke er det rette valg. Denne kode arver System.Web.UI.UserControl - men hvordan skal jeg kunne lave en ekstern metode, hvor object Page kommer med over og returner med værdierne til controls-felter?
Jeg har en usercontrol, som skal bruge en generisk metode. Den metode har jeg skitseret overfor. Jeg kan bare ikke finde ud af det. En del steder står der FindControl, men jeg prøvede med Page.FindControl og det virker ikke.
Yep - lige præcis. Den stump kode optræder flere steder og det er jeg ikke interesseret i. Her snakker jeg genbrug. Men hvordan den usercontrol kan overføres til en C# fil og tilbage igen efter metoden har behandlet den.
public static void GetValues(OdbcDataReader dr, ref System.Web.UI.UserControl myControl) { dr.Read(); for (int i=0;i<dr.FieldCount;i++) { UserControl thisControl = (UserControl)myControl.FindControl(dr.GetName(i)); if (thisControl != null) { if (myControl.FindControl(dr.GetName(i)).GetType().Name.Equals("TextBox")) { ((TextBox)myControl.FindControl(dr.GetName(i))).Text = dr[dr.GetName(i)].ToString(); }
if (myControl.FindControl(dr.GetName(i)).GetType().Name.Equals("Label")) { ((Label)myControl.FindControl(dr.GetName(i))).Text = dr[dr.GetName(i)].ToString(); }
if (myControl.FindControl(dr.GetName(i)).GetType().Name.Equals("FCKeditor")) { ((FCKeditor)myControl.FindControl(dr.GetName(i))).Value = dr[dr.GetName(i)].ToString(); } if (myControl.FindControl(dr.GetName(i)).GetType().Name.Equals("RadioButtonList")) { ((RadioButtonList)myControl.FindControl(dr.GetName(i))).SelectedValue = dr[dr.GetName(i)].ToString(); } } } }
Men det virker ikke. Henter den via CMSUtility.GetValues(dr, ref myControl); Og myControl er en System.Web.UI.UserControl. Er der en fejl et eller andet sted?
Og alle controls er på sin plads, men det smarte ved det er, at den fejler ikke, hvis der mangler en control. Fejlen er no reference to instance of object.
Lukkes, da jeg ikke er kommet videre med problemet og har givet op.. :-(
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.