יום ראשון, 15 בספטמבר 2013

לקבל נתונים מה clipbord בJavaScript

הרעיון פשוט, משתמש יעתיק בתגית textarea טקסט, ואנחנו עוד לפני שהטקסט יודבק נסיר מתוכו את כל התגיות, ונקבל טקסט טהור.
 
נשמע קל, ואכן בIE שתי שורות סיימנו:
מקבלים את הטקסט שהיה כבר באלמנט, לוקחים רק את הטקסט החדש שהועתק ושולחים אותו:
 

$(document).ready(function () {
$(this).live("paste", function (e) {
var oldHtml = document.getElementById("TETXAREA_" + MESSAGEID).innerHTML;
if (window.clipboardData) {
 
    html = window.clipboardData.getData('Text');
    setTimeout(function

() { ClearHtmlTag(html, MESSAGEID, oldHtml); }, 0);
 
 });

});

בכרום לא מצאתי גישה אל ה"לוח-קליפ" (תרגום עברי גרוע...), אך ישנן שתי אפשרויות, לעשות זאת יפה עם מדריך שהצליח, או לעקוף את הבעיה בצורה מכוערת אבל יעילה

               }

});
 

יום רביעי, 11 בספטמבר 2013

בחירת DIV והצגתו לקליינט בJAVASCRIPT שימוש בעדכון מערך

הרעיון הפשוט שישנם עשרות DIV בדף, וכל אחד הינו ייחודי בID שלו (מספרי בדוגמא שלנו), הקליינט בוחר DIV , הDIV נצבע והנתון של הID נכנס למערך.
המערך הינו בJAVASCRIPT שמתעדכן בהכנסה והוצאה של הנתונים. לחיצה על הDIV - הDIV נדלק וערכו נכנס למערך, לחיצה נוספת על הDIV - הDIV נכבה וערכו מוסר מהמערך:
 [נ.ב. הקוד משתמש בJQUERY, אז לא לשכוח להוסיף, מכיוון שהפונקציה indexOf אינה תומכת בדפדפנים ישנים]
<div id="1" onclick="takeDiv('1')" />
<div id="2" onclick="takeDiv('2')" />
<script type="text/javascript">
// Array Remove - By John Resig (MIT Licensed)
        Array.prototype.remove = function (from, to) {
            var rest = this.slice((to || from) + 1 || this.length);
            this.length = from < 0 ? this.length + from : from;
            return this.push.apply(this, rest);
       };
 function takeDiv(idDiv) {
          PrintDiv(idDiv);
          inseretToArray(idDiv);
    }
function PrintDiv(idDiv) {
         if (document.getElementById(idDiv).style.background != 'orange') {
             document.getElementById(idDiv).style.background = 'orange';
            } else {
               document.getElementById(idDiv).style.background = 'white';
            }
}
var listOfDivId = new Array();
function inseretToArray(idDiv) {
            if ($.inArray(idDiv, listOfDivId) == -1) {
                listOfDivId.unshift(idDiv);
            } else {
                listOfDivId.remove(($.inArray(idDiv, listOfDivId)));
            }
}
</script>

יצירת טבלה באופן אוטומטי מהמסד נתונים (repeater)

נשתמש בדוגמא של ההרשאות מלפני שני פוסטים (רק בשינוי קטן, שיש תמונה של המשתמש), אם נרצה להציג את ההרשאות בטבלה, אבל באופן מתקדם יותר מטבלה.
אפשר להשתמש בפקד asp:table , שייצור טבלאות ממש עם התגיות tr td, אבל היום מפתחי אתרים מנסים להשתמש כמה שיותר עם div, כי זה קל יותר לעיצוב רספונטסיבי, וזמן הטעינה של תגיות הdiv יותר מהיר (הדפדפן לא מחכה שכל הטבלה תתרנדר),
לשם כך נשתמש בפקד asp:repater, באופן פשוט בCS נעשה חיבור למסד נתונים, נגדיר sql reader שיקרא את כל הנתונים מהמסד, ונחבר אותו לפקד בתצוגה.
 
protected void Page_Load(object sender, EventArgs e)
    {
SqlConnection con = new SqlConnection(Server=localhost;Database=MSSQL;Integrated Security=SSPI);

 
        SqlCommand Cmd = new SqlCommand("SELECT [PermissionImg] ,[PermissionName] FROM Permission ORDER BY PermissionLevel ASC", con);

 
        con.Open();
        SqlDataReader rd= Cmd.ExecuteReader();
        REPermission.DataSource = rd;
        REPermission.DataBind();

        con.Close();
        rd.Close();

 
}
 זהו, לא היה כואב, לא היה קשה.
בתצוגה עצמה נגדיר כמובן את הפקד, ונגדיר כיצד אנחנו רוצים להשתמש בנתונים PermissionImg, PermissionName

<asp:repeater ID="REPermission" runat="server">
<itemtemplate>
      <div class="imgPermission">
 
<img src='../img/user/<%# DataBinder.Eval(Container.DataItem,"PermissionImg") %>' alt="<%# DataBinder.Eval(Container.DataItem,"PermissionName") %> " class="smallImg">
   
<br />
 
 <span style="text-align:center;"> <%# DataBinder.Eval(Container.DataItem,"PermissionName") %></span>
      
      </div>
</itemtemplate>
                    </asep

הזרקה של enum לרשימה נגללת (DropDownList)

קודם נבנה את המחלקה, נוסיף מחלקה בפרוייקט:
 
public class enumLessonType
{
       public enumLessonType()    {}
    public enum lessonType
    {
        שהייה,
        עזר
    }
}
 
זהו, נוסיף את הפקד בדף:
<asp:DropDownList ID="DDLtypeLesson" runat="server"></asp:DropDownList>
 
ועכשיו את הפקודה שרצה על כל המחלקה, ומצרפת את כל האלמנטים:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
enumLessonType type = new enumLessonType();
DDLtypeLesson.DataSource = Enum.GetNames(typeof(enumLessonType.lessonType));
DDLtypeLesson.DataBind();
}
}
 

יום ראשון, 8 בספטמבר 2013

יצירת רשימה נגללת (DropDownList) באופן אוטומטי מהמסד נתונים

שנן שתי אפשרויות לייצר בזריזות מהמסד נתונים את רשימת הפריטים המופיעים:
לדו':
בטבלה Permission [הרשאות] כתובים אנשים ודרגת הרשאותיהם:
       PermissionLevel   PermissionName   
1.                1                                  all
2.               2                               manager
3.               3                                director
 
 
בשביל להציג ברשימה את הדרגות, כאשר בחירה של המשתמש תתן לנו ערך של הדרגה (1,2,3)
 
נוסיף לעמוד את הרשימה:
<asp:DropDownList ID="DDLPermission" class="text" runat="server"></asp:DropDownList>
ובדף CS נכתוב את הקוד שיקח מהמסד הנתונים את הנתונים להצגה:

protected void Page_Load(object sender, EventArgs e)
    {
SqlConnection con = new SqlConnection(Server=localhost;Database=MSSQL;Integrated Security=SSPI);

        SqlCommand Cmd = new SqlCommand("SELECT [PermissionLevel] ,[PermissionName] FROM Permission ORDER BY PermissionLevel ASC", con);

        con.Open();
        SqlDataReader rd= Cmd.ExecuteReader();
        DDLPermission.DataSource = rd;
        DDLPermission.DataTextField = "PermissionDescription";
        DDLPermission.DataValueField = "PermissionLevel";
        DDLPermission.DataBind();
        con.Close();
        rd.Close();

}
אפשרות שנייה מהירה יותר להשתמש בעמוד באלמנט שיוצר את החיבור ישירות, ולחבר אותו לרשימה עצמה:
 
  <asp:DropDownList ID="DDLPermission" class="text" runat="server" DataSourceID=" PermissionConnection" DataTextField="PermissionDescription" DataValueField="PermissionLevel"></asp:DropDownList>

<asp:SqlDataSource runat="server" ID="PermissionConnection" ConnectionString='<%$ ConnectionStrings:Server=localhost;Database=MSSQL;Integrated Security=SSPI %>' SelectCommand=" SELECT [PermissionLevel] ,[PermissionName] FROM Permission ORDER BY PermissionLevel ASC"></asp:SqlDataSource>