كيف يمكنني تعيين الجدول الخلفية برمجيا أثناء تشغيل أحد asp.net الصفحة ؟

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

  •  22-07-2019
  •  | 
  •  

سؤال

لدي صفحة aspx واحد لون الخلفية الافتراضي.أنا بحاجة إلى أن يكون قادرا على تغييره برمجيا عندما معين خيار زر تحديد.حاولت وضع حقل معرف من الجدول ، ولكن لا أستطيع الوصول إليه في التعليمات البرمجية C# خلف الملف.

بلدي الجدول الأصلي هو:

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width:  thin; width:100%; background-color: #99ccff;" cellspacing="4" 
cellpadding="1">

أنا لا أرى معرف في التحسس ، على الرغم من.

تحرير:
الآن أستطيع أن أرى بلدي الجدول في قانون بلدي وراء أحاول في الواقع تغيير لون الخلفية.هنا هو رمز لبلدي radiobuttonlist:

<asp:RadioButtonList ID="rdoStatus" runat="server" AutoPostBack="true"
RepeatDirection="Horizontal" Visible="true"   
OnSelectedIndexChanged="rdoStatus_OnSelectionChanged">
<asp:ListItem Value="181001" Text="Open"/>
<asp:ListItem Value="181002" Text="Closed" />
<asp:ListItem Value="181003" Text="Pending" />
</asp:RadioButtonList>

أنا ضرب توقف أنا وضعت في معالج الحدث ، ولكن لون الخلفية لا تتغير على إعادة النشر.إذا كان العنصر المختار هو انتظار, ثم أريد تغيير لون الخلفية إلى شيء مختلف.إذا كانت تغيير زر راديو مفتوحة أو مغلقة, ثم أريد أن تأكد من لون الخلفية الافتراضي.

تحرير 2:
التعليمات البرمجية في معالج الحدث هو بسيط جدا:

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.BgColor = "#ff9a9a";
}
else
{
  tblSheet.BgColor = "#99ccff";
}
هل كانت مفيدة؟

المحلول 3

حصلت عليه العمل!
لقد غيرت الجدول التالي (I إزالة لون الخلفية):

<table id="tblSheet" runat="server" style="border-color: #FF9900; border-style: solid; 
border-width: thin; width:100%;" cellspacing="4" cellpadding="1">

ثم في قانون بلدي وراء تعيين لون الخلفية في Page_Load عندما لا إعادة نشر:

tblSheet.Bgcolor = "#99ccff";

فويلا!على radiobuttonlist و معالج الحدث هي نفسها كما في السؤال.إعادة النشر تم تغيير اللون العودة إلى الأصل.شكرا على مساعدة الجميع!

نصائح أخرى

مكان runat="server" في الجدول الوسم

مرة واحدة كنت قد فعلت ذلك عليك أن تكون قادرا على الوصول إلى جدول برمجيا.

لتغيير لون الخلفية مباشرة ، في محاولة:

if (rdoStatus.SelectedValue == "181003")
    {
      tblSheet.Style.Add("background-color", "#ff9a9a");
    }
    else
    {
      tblSheet.Style.Add("background-color", "#99ccff");
    }

إذا كنت تستخدم الأنماط يمكنك, جرب هذا:

if (rdoStatus.SelectedValue == "181003")
{
  tblSheet.CssClass = "default_color"
}
else
{
  tblSheet.CssClass = "other color"
}

هل التسبب في إعادة النشر من شأنها أن تجعل هذا التغيير مباشرة من راديو الزر ؟
هذا هو الشيء الوحيد الذي يتغير في هذا الوقت ؟

إذا كان الجواب على كل تلك "نعم" ، يجب أن تفعل كل هذا في جافا سكريبت بدلا من تخطي إعادة النشر تماما:

<input type="radio" value="..." name="..." id="..."
    onclick="document.getElementById('tblSheet').style.backgroundColor = '#99ccff';" />

المنطق هنا هو أن postbacks بشكل لا يصدق بطيئة مقارنة مع إبقاء كل شيء على العميل ، كما أنها تؤذي قدرة التطبيق على شبكة الإنترنت على نطاق بسهولة (المزيد من العمل على الخادم بالطبع سيئة تطويره).لذلك أسرع للمستخدم أقل من العمل على الخادم الخاص بك.

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

أولا لا يمكنك مشاهدة الجدول لأنه لا يوجد runat="server" سمة من الجدول الذي يسمح لك أن ترى معرف ثاني شيء أنك لن تكون قادرة على تغيير ألوان الجدول حتى لو كنت انظر الجدول الوارد في التعليمات البرمجية الخاصة بك.حتى إذا كنت الوصول إلى الجدول سمات وتعيين لون هناك لن تساعدك إما لأنك سوف تحتاج إلى ما بعد العودة مرة أخرى إلى رؤية التغيير.

ما عليك القيام به هو استخدام تحديث لوحة استخدام متغير بدلا من #FF9900 هذه الطريقة الافتراضية اللون سوف يكون أحمر أو أي لون هو على التحقق من حالة خانة الاختيار سوف تغيير القيمة إلى أخضر أو لون آخر.

مثل جويل قال جافا سكريبت هو أفضل حل إذا كنت تحتاج فقط إلى تغيير الألوان ولكن إذا كنت تحويل الجدول الخاص بك إلى ملقم التحكم (باستخدام runat=server في الجدول الخاص بك أو ملقم آخر التحكم) لا تنسى أن استخدام رمز جزءا لا يتجزأ من كتلة في getElementById لاسترداد table id لأن ASP.NET إعادة تسمية معرف عندما يجعل الصفحة.

في جويل سبيل المثال سوف تبدو مثل:

<input type="radio" value="..." name="..." id="..."    onclick="document.getElementById('<% =tblSheet.ClientID%>').style.backgroundColor = '#99ccff';" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top