У меня есть считыватель данных для чтения строки из базы данных в этом формате 2014-07.Формат строки в RowDataBound
В строке запроса значения Я всегда строка 2014-07 и я использую метод форматирования строки, чтобы иметь на выходе июля 2014 в RowDataBound:
//In RowDataBound
if (!string.IsNullOrEmpty(Request.QueryString["Month"]))
{
e.Row.Cells[1].Text = string.Format(CultureInfo.CurrentCulture, "{0:MMMM yyyy}",
DataBinder.Eval(e.Row.DataItem, "Month"));
}
Я использую этот код ниже создать новый ключ в моем C# приложения, основанный на строке 2014-07 или июля 2014:
Label Month = (Label)row.FindControl("Month");
//generate a new key
DateTime dt;
DateTime.TryParseExact(Month.Text.ToString(), "MMMM yyyy",
CultureInfo.CurrentCulture, DateTimeStyles.None, out dt);
//Check "-" in string
if (Month.Text.ToString().IndexOf("-") == -1)
{
string key = dt.ToString("yyyy-MM");
}
else
{
string key = Month.Text.ToString();
}
Если строка 2014-07 и не преобразовать значение 2014-07 к 2014 июля У меня есть правильный вывод:
2014-07
Если строка преобразуется в RowDataBound в июле 2014 у меня есть неправильный вывод:
0001-01
Это начинает заставлять меня думать, что моя структура в целом неверна.
Что мне не хватает?
Что не так с кодом?
Я был бы очень признателен за любую помощь, которую вы можете дать мне в решении этой проблемы.
Edit #1
Я попытался напечатает значение GridView при выходе июля 2014 и Ouput пуст, почему?
Label Month = (Label)row.FindControl("Month");
Response.Write(Month.Text.ToString());
Response.End();
Edit #2
код завершения ниже:
protected void sendValueOfMonth(object sender, EventArgs e)
{
DateTime d = DateTime.Now;
string key;
ImageButton ImgSend = (ImageButton)sender;
GridViewRow row = (GridViewRow)Lotto_A.NamingContainer;
Label Month = (Label)row.FindControl("Month");
DateTime dt;
DateTime.TryParseExact(Month.Text.ToString(), "MMMM yyyy",
CultureInfo.CurrentCulture, DateTimeStyles.None, out dt);
//Check "-" in string
if (Month.Text.ToString().IndexOf("-") == -1)
{
key = dt.ToString("yyyy_MM");
}
else
{
key = Month.Text.ToString();
}
Response.Write(Month.Text.ToString() + "<br />");
Response.Write(key.ToString());
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
ImageButton ImgSend = (ImageButton)e.Row.FindControl("ImgSend");
Label Month = (Label)row.FindControl("Month");
if (!string.IsNullOrEmpty(Request.QueryString["Month"]))
{
InitializeCulture();
e.Row.Cells[1].Text = string.Format(CultureInfo.CurrentCulture, "{0:MMMM yyyy}", DataBinder.Eval(e.Row.DataItem, "Month"));
}
}
}
<asp:TemplateField HeaderText="Send">
<ItemTemplate>
<center>
<asp:ImageButton ID="ImgSend" runat="server" OnClick="sendValueOfMonth" />
</center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Month">
<ItemTemplate>
<center>
<asp:Label ID="Month" runat="server" Text='<%# Eval("Month").ToString() %>'></asp:Label>
</center>
</ItemTemplate>
</asp:TemplateField>
Уход за разделом источника переднего конца также? – jomsk1e
передний источник? код gridView? –