DetailsView中的DateTime需要毫秒精度c#如何直接在详细信息视图中访问数据?

时间:2014-01-22 13:27:43

标签: c# asp.net datetime detailsview accessor

所以我一直在浏览堆栈溢出和MSDN,无法找到一个控件(或理解我所拥有的)直接访问详细信息视图的数据。我使用.Net WebApplication在C#中。

我认为我正在寻找的是gridview中的等价物是row.Cells [1] .Value可以帮助找到DetailsView单元的访问者吗?

我要做的是访问我绑定到DetailsView1的确切数据值 .Text足以用于所有数字和字符串(例如只显示两个)但不能用于时间戳MTTS(日期时间),因为它丢失毫秒和我在使用后无法找到正确值的代码(SQL查询) db没有毫秒。我是否还需要更改绑定数据的方式,还是需要一些设置来为绑定数据提供毫秒精度?

代码示例:

    Decimal RUN_ID = 0;
    DateTime MTTS = new DateTime();

    foreach(DetailsViewRow row in DetailsView1.Rows)            
    {                
            switch(row.Cells[0].Text)
            {

                case "RUN_ID":
                    RUN_ID = Decimal.Parse(row.Cells[1].Text);
                    break;
                case "MTTS":
                    MTTS = DateTime.Parse(row.Cells[1].ToString());                       
                    break;

           }

   }

我试过了

   row.Cells[1].ID = "MTTS";
   MTTS = (DateTime)((DataRowView)DetailsView1.DataItem)["MTTS"];

但它不承认MTTS,我不知道如何设置参数我已经尝试过几个不同的东西但没有成功。

1 个答案:

答案 0 :(得分:0)

解决方法很乱,基本上我重建了将数据收集到GridView的查询,然后我创建了一个函数来直接使用LinQ和GridView内部的参数来获取MTTS,GridView将MTTS指定为DateTime。

在我看来,这是一种糟糕的做事方式,但它有效。我希望有一个更好的解决方案。

    MTTS = GetMTTS(JOB_PLAN, JOB_NAME,JOB_NAME_ID,RUN_ID,JOB_STATUS);

    public DateTime GetMTTS(string JOB_PLAN, string JOB_NAME, string JOB_NAME_ID, Decimal RUN_ID, string JOB_STATUS){

        string myEnvName = XXX;
        TableName = XXX.ToString();
        ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[myEnvName].ToString();

        string thisRUN_ID = RUN_ID.ToString();
        cmdText = @"SELECT MTTS FROM " + TableName + 
            " WHERE JOB_PLAN = '" + JOB_PLAN + "'"
            + " AND JOB_NAME = '" + JOB_NAME + "'"
            + " AND JOB_NAME_ID = '" + JOB_NAME_ID + "'"
            + " AND RUN_ID = '" + thisRUN_ID + "'"
            + " AND JOB_STATUS = '" + JOB_STATUS + "'";

        DataSet ds = new DataSet();           
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
            conn.Open();
            try
            {
                SqlCommand SQLcc = new SqlCommand(cmdText,conn);
                SqlDataReader reader;
                reader = SQLcc.ExecuteReader();
                while (reader.Read())
                {
                    MTTS = reader.GetDateTime(0);
                }        
                reader.Dispose();
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }                
        }
        return MTTS;
    }