Thursday, June 9, 2011

Data Relation and bind data in inner,outer repeater Example

 private void GetEmailNotification(Int64 memberID)
        {
            try
            {
                dsMailNotification = objEmailNotifications.GetEmailNotification(memberID);
                String notificationSetting = String.Empty;
                if (dsMailNotification.Tables[2].Rows.Count > 0)
                {
                    notificationSetting = Convert.ToString(dsMailNotification.Tables[2].Rows[0]["NotificationSetting"]);
                }
                if (!notificationSetting.Equals(String.Empty))
                {
                    objNotificationList = objEmail.ReadNotificationSetting(notificationSetting);
                   
                }
// Example of data relation between dataset
                dsMailNotification.Relations.Add("NotificationGroupID", dsMailNotification.Tables[0].Columns["NotificationGroupID"], dsMailNotification.Tables[1].Columns["NotificationGroupID"]);
                rptEmailNotification.DataSource = dsMailNotification.Tables[0];
                rptEmailNotification.DataBind();
                dsMailNotification.Dispose();

            }
            catch (Exception ex)
            {
                _objError.WriteLog("Error on GetEmailNotification", ex.Message,ex.StackTrace);
            }
        }

 protected void rptEmailNotification_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            try
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    string groupName = Convert.ToString(DataBinder.Eval(e.Item.DataItem, "GroupName"));
                    HtmlContainerControl divhappen = (HtmlContainerControl)e.Item.FindControl("divHappens");
                     int groupId = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "NotificationGroupID"));
                    if (groupName.ToLower().Equals("presentation"))
                    {
                        divhappen.Style.Add("display", "none");
                       
                   }
                    if (groupId == 4)
                    {
                        divGroup.Style.Add("display", "none");
                    }
                   // rptNotificationDetails is inner repeater
                    Repeater rptDetails = (Repeater)e.Item.FindControl("rptNotificationDetails");
                    DataView dv = ((DataRowView)e.Item.DataItem).CreateChildView("NotificationGroupID");
                    if (dv != null)
                    {
                        rptDetails.DataSource = dv;
                        rptDetails.DataBind();
                    }
                }
            }
            catch (Exception ex)
            {
                _objError.WriteLog("Error on rptEmailNotification_ItemDataBound",ex.Message,ex.StackTrace);
               
            }

        }

        protected void rptNotificationDetails_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            try
            {
                String[] disableNotificationId = DisableNotification.Split(',');
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    CheckBox chkInstant = (CheckBox)e.Item.FindControl("ckhInstant");
                    Literal ltrInstant = (Literal)e.Item.FindControl("ltrInstant");
                    CheckBox chkDaily = (CheckBox)e.Item.FindControl("chkDaily");
                    Literal ltrDaily = (Literal)e.Item.FindControl("ltrDaily");
                    CheckBox chkWeekly = (CheckBox)e.Item.FindControl("chkWeekly");
                    Literal ltrWeekly = (Literal)e.Item.FindControl("ltrWeekly");
                    HtmlContainerControl divDescription = (HtmlContainerControl)e.Item.FindControl("pDescription");
                    DropDownList ddlEmailTrigger = (DropDownList)e.Item.FindControl("ddlEmailTrigger");
                    NotificationSetting notificationSetting = new NotificationSetting();
                    int mailNotificationID = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "MailNotificationID"));                   
                    Int32 emailTriggerID;
                    foreach(string str in disableNotificationId)
                    {
                        if (str == Convert.ToString(mailNotificationID))
                        {
                            divDescription.Visible = false;
                        }
                    }
                    if (objNotificationList != null)
                    {
                        if (!objNotificationList.TryGetValue(mailNotificationID, out notificationSetting))
                        {
                            emailTriggerID = 0;
                            if (Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "IsInstant")) != 2)
                            {
                                SetNotificationOption(chkInstant, ltrInstant, 0);
                            }
                            else
                            {
                                SetNotificationOption(chkInstant, ltrInstant, 2);
                            }

                            if (Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "IsDailyDigest")) != 2)
                            {
                                SetNotificationOption(chkDaily, ltrDaily, 0);
                            }
                      
                            if (Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "IsWeeklyDigest")) != 2)
                            {
                                SetNotificationOption(chkWeekly, ltrWeekly, 0);
                            }
                          }
                         }
                    else
                    {
                        emailTriggerID = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "EmailTriggerID"));
                        SetNotificationOption(chkInstant, ltrInstant, Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "IsInstant")));
                        SetNotificationOption(chkDaily, ltrDaily, Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "IsDailyDigest")));
                        SetNotificationOption(chkWeekly, ltrWeekly, Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "IsWeeklyDigest")));
                    }
                    BindEmailTriggerList(ddlEmailTrigger, mailNotificationID,  emailTriggerID, dsMailNotification.Tables[3]);

                   
                }
            }
            catch (Exception ex)
            {
                _objError.WriteLog("Error on rptNotificationDetails_ItemDataBound", ex.Message, ex.StackTrace);
            }
        }



No comments:

Post a Comment