KyLim0211 Ответов: 1

Asp.net веб-формы назначают набор данных результату запроса хранимой процедуры


protected void Calendar1_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
   {
       DataSet ds1 = new DataSet();
       int loggedUserID = Convert.ToInt32(Session["loggedUserID"]);
       List<BOL.UserInfo> userslist = new UserInfos().List();
       BOL.UserInfo loggeduser = userslist.Where(x => x.UserID == loggedUserID).FirstOrDefault();
       List<BOL.MonthlyEvent> Eventlist = new MonthlyEvents().Filter(loggeduser.SUBSIDIARY_CD,loggeduser.CostCenter);
       //ds1 = Eventlist.
       if (!e.Day.IsOtherMonth)
       {
           foreach (DataRow dr in ds1.Tables[0].Rows)
           {
               if ((dr["Event_Date"].ToString() != DBNull.Value.ToString()))
               {
                   DateTime dtEvent = (DateTime)dr["Event_Date"];
                   if (dtEvent.Equals(e.Day.Date))
                   {
                       Label b = new Label();
                       Label d = new Label();
                       b.Font.Size = 8;
                       b.Font.Bold = true;
                       b.ForeColor = System.Drawing.ColorTranslator.FromHtml("#336699");
                       b.Text = dr["EventTitle"].ToString();
                       //   d.Text = dr["description"].ToString();
                       Literal lineBreak = new Literal();
                       lineBreak.Text = "<BR/><BR/>";
                       e.Cell.Controls.Add(lineBreak);
                       //e.Cell.Controls.Add(b);
                       System.Web.UI.HtmlControls.HtmlGenericControl Link = new
                       System.Web.UI.HtmlControls.HtmlGenericControl();
                       Link.TagName = "a";
                       Link.InnerText = dr["EventTitle"].ToString();
                       //   Link.InnerText = dr["description"].ToString();
                       Literal id = new Literal();
                       Label c = new Label();
                       c.Text = e.Day.Date.ToString("yyyy-MM-dd");
                       //set the href value to the javascript function to select the date
                       string myContent = dr["Event_Description"].ToString().Trim().Replace("'", "%2527").Replace("&", "%2526").Replace("+", "%252b");
                       //string myContent = "test";
                       string myTitle = dr["EventTitle"].ToString().Trim();
                       Link.Attributes.Add("href", "javascript:window.location.href=('Event_Edit.aspx?eventdate=" + c.Text + "&title=" + Server.UrlEncode(myTitle) + "&content=" + Server.UrlEncode(myContent) + "');");

                       //set the color of the link
                       Link.Attributes.Add("style", "color:#336699;");

                       //add our link control to the day
                       e.Cell.Controls.Add(Link);
                   }
               }
           }
       }
   }


я получаю результат запроса от
MonthlyEvents().Filter(loggeduser.SUBSIDIARY_CD,loggeduser.CostCenter);

как назначить ds1 = мой результат запроса?

Что я уже пробовал:

ds1 = список событий ,но не работает..

1 Ответов

Рейтинг:
2

Karthik_Mahalingam

вы не можете назначить общий список в набор данных или DataTable,
используйте эти утилиты для преобразования списка в набор данных
преобразовать список< t> В набор данных? [^]
Преобразование общего списка в набор данных в C# - Stack Overflow[^]

или с помощью ручного преобразования:

public class MyType
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}


Ручное Преобразование
List<MyType> listMyType = new List<MyType>();
       listMyType.Add(new MyType() { ID = 1, Name = "aa", Address = "ind" });
       listMyType.Add(new MyType() { ID = 1, Name = "bb", Address = "uk" });
       DataSet ds = new DataSet();

       DataTable dt = new DataTable();
       dt.Columns.Add("ID", typeof(int));
       dt.Columns.Add("Name", typeof(string));
       dt.Columns.Add("Address", typeof(string));
       foreach (var item in listMyType)
           dt.Rows.Add(item.ID, item.Name, item.Address);

       ds.Tables.Add(dt);