الوصول إلى أساليب برمجيا إلى الحصول على قيم

StackOverflow https://stackoverflow.com/questions/606943

  •  03-07-2019
  •  | 
  •  

سؤال

في تطبيقنا لدينا أوراق الأنماط لتحديد الألوان شيوعا الخ ... لقد كتبت وظيفة سريعة وقذرة حيث أحصل على بيانات من إجراء مخزن، لوب قبالة الأعمدة التي لا تريد أن تظهر، الالزام قبل أن تتحول إلى ولدت برمجيا DataGrid، تعيين هذا الأنماط DataGrid، ثم تصديره إلى Excel. الجميع يحب الألوان في إخراج إكسل (لهاث! وهي مطابقة الألوان DataGrid، بلاه بلاه بلاه ...).

مقالي الأخير أود أن أضيف إلى ذلك هو أن وأود أن الوصول برمجيا النمط واللون والاستيلاء على رموز وعناصر أخرى منها (.IntranetGridHead) بدلا من الصعب الترميز لهم، وهو ما أقوم به الآن.

int iHeaderColor = Convert.ToInt32 ("D0D7E8", 16);
DataGrid dg = new DataGrid();
dg.DataSource = dsReturnDataSet.Tables[0].DefaultView;
dg.DataBind();

dg.HeaderStyle.BackColor = System.Drawing.Color.FromArgb(iHeaderColor);
dg.HeaderStyle.Font.Bold = true;
dg.HeaderStyle.Font.Size = 10;

من الواضح بعد ذلك كلما الشركة تمر آخر "الوسم" وتغيير القيم ورقة الأنماط، والألوان وسوف تتفوق تطابق تلقائيا وأنا سوف تحصل على كبير (بات على ظهره || الكعكة).

أي أفكار من C # الناس الذين يعرفون أكثر مما كنت (والتي يمكن أن تكون أكثر منكم ...) منتديات شكرا،
مايكل

هل كانت مفيدة؟

المحلول

وكافة الكائنات Web.UI.Control تحتوي على خاصية والأنماط، التي يمكن الوصول إليها كما أنماط [ "الاسم"]. لذلك يمكنك القيام بذلك:

DataTable dt = LookupStyles();
dg.Styles.Clear();
foreach (DataRow dr in dt.Rows)
  dg.Styles.Add(dr["StyleName"].ToString(), dr["StyleValue"].ToString());

وكان لي فكرة مماثلة قبل عدة أشهر :) ملاحظة لهذا العمل الصحيح، يجب أن RUNAT الشبكة الخاصة بك = "الخادم".

وتحرير: يبدو أنك تريد أن تقرأ الشبكة واستخدام ذلك ... إذا كنت تستخدم .CssStyle والأنماط (. المغلق)، سيكون لديك للقيام HTTP GET إلى ذلك الملف المغلق وتحليل ذلك بنفسك.

نصائح أخرى

وأنت يجب أن تحليل CSS ملف نفسك، وIIRC لا يوجد محلل ملف CSS في .NET Framework من خارج منطقة الجزاء. ومع ذلك، هناك واحد حر أن تجد هنا:

http://www.codeproject.com/KB/recipes/CSSParser.aspx

ويجب أن تكون قادرة على استخدام هذا لتحليل ملف CSS ذلك الحين. من هناك يجب أن تكون قادرة على الحصول على الأناقة وقيمة وتطبيقه على شبكة البيانات الخاصة بك.

ولقد كتبت شيئا على هذا المنوال في حين يعود. لقد شاركت في عملية HttpHandler للتعامل مع ملفات CSS، تغيير في التكوين IIS للحصول على asp.net لاستقبال طلبات الحصول على ملفات CSS، وهيكل ملف xml بسيط الذي يحتوي على تعريفات لون بلدي. ولكن كنت قد فعلت ذلك مع قاعدة بيانات، وهذا أمر جيد للغاية.

وبعد ذلك في CSS كان لي شيئا من هذا القبيل ...

.button
{
    background-color: $colours:button-background-colour;
    color: $colours:button-text-colour;
}

ومع بلدي أكس الذي يحدد القيم زر لون الخلفية وزر لون النص. كنت منتظم استبدال نص التعبير لمعالجة ملف CSS استبداله في القيم ذات الصلة من ملف xml.

وأنا متأكد من أنك يمكن أن تأخذ بعض تلك الأفكار ودمجها مع التعليمات البرمجية الموجودة للحصول على التأثير المطلوب. سوف بالطبع بحاجة للتعامل مع التخزين المؤقت وتغييرات / أكس ملف قاعدة البيانات الخاصة بك.

وعلى أمل أن يساعد.

إذا كنت بحاجة إلى أي مؤشرات على أي من ذلك ثم أنا متأكد من أني يمكن انتشال بعض رمز المثال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top