1

実行されるSQL選択スクリプトがあり、実行時にデータが選択されていることが示されます。私が抱えている問題は、そのデータをカレンダー コントロールに表示しようとしていることです。ユーザーがログインした部門によってカレンダーを変更したかったのです。現在、部門をハードコーディングしない限り、何も表示されず、データは表示されません。

私は c# asp.net を使用しています。

これが私がデータを取得しようとしていることです

        private DataSet GetData()
    {
        var CurrUser = "a73      ";
        var UsrDepartment = "60      ";

        Account.Login uusr = new Account.Login();
        CurrUser = uusr.User.Identity.Name.ToString().ToUpper();

        ConnectionStringSettingsCollection cssc = ConfigurationManager.ConnectionStrings;

        var sql = "select (substring(status, 1,1)) AS stat1, lastname, firstname, ldate, edate,depdivid, requestid from TIME.employee E inner join TIME.request T on E.EMPID = T.empid where E.depdivid =  @UsrDepartment ";

        using (iDB2Connection conn = new iDB2Connection(GetConnectionString()))
        {
            conn.Open();

            using (iDB2Command cmd = new iDB2Command(sql, conn))
            {
                cmd.DeriveParameters();

                using (iDB2DataAdapter da = new iDB2DataAdapter(cmd))
                {
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                    return ds;
                }
            }
        }
    }

私はこれでカレンダーを埋めます:

DataSet ds = GetData();    
foreach (DataRow row in ds.Tables[0].Rows)
                {
                    //need to fill from first to last date
                    string scheduledDate = Convert.ToDateTime(row["ldate"]).ToShortDateString();
                    string endDate = Convert.ToDateTime(row["edate"]).ToShortDateString();

                    e.Cell.Width = 120;
                    e.Cell.Height = 100;

                    Int32 start = 0;
                    Int32 end = 0;

                    start = string.CompareOrdinal(scheduledDate, s);
                    end = string.CompareOrdinal(endDate, s);

                    if ((start <= 0) & (end >= 0) & (!e.Day.IsWeekend))
                    {
                        HyperLink lb = new HyperLink();
                        lb.Text = link + (Int64)row["requestid"] + "' >" + row["lastname"] + "</a>" as String + "(" + row["stat1"] + ")" as String + "<br />";

                        //code to change color of button
                        if (scheduledDate == endDate)
                        {
                            lb.CssClass = "changecolor";
                        }
                        e.Cell.Controls.Add(lb);
                    }
                }

この方法ではカレンダーにリンクが表示されませんが、部門に値を持たせると(これは私が望んでいたものではありません)、リンクが表示されます。

4

1 に答える 1

1

このような行が必要だと思います

cmd.Parameters["@UsrDepartment"].Value = myDept
于 2012-10-18T16:17:40.473 に答える