所以我一直在浏览堆栈溢出和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,我不知道如何设置参数我已经尝试过几个不同的东西但没有成功。
答案 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;
}