Я пытаюсь прикрепить средство выбора даты к столбцу startdate моего динамического вида сетки, используя javascript.Я предпочитаю использовать javascript, чтобы даже когда пользователь добавляет строку (нажав кнопку «Добавить» в нижней части сетки), средство выбора даты будет доступно в новой строке.Пожалуйста, смотрите мой код ниже.
Текущий javascript для манипулирования контактным столбцом сетки.
<script src="javascript/jquery-ui-1.7.1.custom.min.js" type="text/javascript"></script>
<script type="text/javascript" src="javascript/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".ddlClass").change(function () {
var txt = $(this).closest("tr").find(".txtClass");
if ($(this).val() == "First") {
txt.css("background", "#cccccc");
txt.attr("disabled", "disabled");
}
else {
txt.css("background", "#ffffff");
txt.attr("disabled","");
}
});
});
</script>
Gridview.
<div>
<asp:gridview ID="Gridview1" runat="server" ShowFooter="true" AutoGenerateColumns="false" OnRowCreated="Gridview1_RowCreated">
<Columns>
<asp:BoundField DataField="RowNumber" HeaderText="No." />
<asp:TemplateField HeaderText="AGE">
<ItemTemplate>
<asp:TextBox runat="server" ID="StartDate" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CONTACT">
<ItemTemplate>
<asp:DropDownList ID="dlstContact" runat="server" AppendDataBoundItems="true" CssClass="ddlClass">
<asp:ListItem Text="--Select--" Value="" />
<asp:ListItem>First</asp:ListItem>
<asp:ListItem>Repeat</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ContactDate">
<ItemTemplate>
<asp:TextBox runat="server" ID="ContactDate" CssClass="txtClass"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>
<br />
<asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" OnClick="ButtonAdd_Click" />
</div>
ButtonAdd_Click вызывает следующую функцию
private void AddNewRowToGrid()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
//extract the TextBox values
TextBox idno = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("txtIDNO");
TextBox names = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("txtNames");
DropDownList sex = (DropDownList)Gridview1.Rows[rowIndex].Cells[3].FindControl("dlstSex");
TextBox age = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("txtAge");
DropDownList maritalstatus = (DropDownList)Gridview1.Rows[rowIndex].Cells[5].FindControl("dlstMaritalstatus");
DropDownList sector = (DropDownList)Gridview1.Rows[rowIndex].Cells[6].FindControl("dlstSector");
DropDownList attachment = (DropDownList)Gridview1.Rows[rowIndex].Cells[7].FindControl("dlstAttachment");
DropDownList contact = (DropDownList)Gridview1.Rows[rowIndex].Cells[8].FindControl("dlstContact");
jQueryDatePicker contactdate = (jQueryDatePicker)Gridview1.Rows[rowIndex].Cells[9].FindControl("txtContactdate");
DropDownList session = (DropDownList)Gridview1.Rows[rowIndex].Cells[10].FindControl("dlstSession");
drCurrentRow = dtCurrentTable.NewRow();
drCurrentRow["RowNumber"] = i + 1;
dtCurrentTable.Rows[i - 1]["IDNO"] = idno.Text;
dtCurrentTable.Rows[i - 1]["Names"] = names.Text;
dtCurrentTable.Rows[i - 1]["Sex"] = sex.Text;
dtCurrentTable.Rows[i - 1]["Age"] = age.Text;
dtCurrentTable.Rows[i - 1]["MaritalStatus"] = maritalstatus.Text;
dtCurrentTable.Rows[i - 1]["Sector"] = sector.Text;
dtCurrentTable.Rows[i - 1]["Attachment"] = attachment.Text;
dtCurrentTable.Rows[i - 1]["Contact"] = contact.Text;
dtCurrentTable.Rows[i - 1]["ContactDate"] = contactdate.Text;
dtCurrentTable.Rows[i - 1]["Session"] = session.Text;
rowIndex++;
}
dtCurrentTable.Rows.Add(drCurrentRow);
ViewState["CurrentTable"] = dtCurrentTable;
Gridview1.DataSource = dtCurrentTable;
Gridview1.DataBind();
}
}
else
{
Response.Write("ViewState is null");
}
//Set Previous Data on Postbacks
SetPreviousData();
}
И функция setPreviousData здесь.
private void SetPreviousData()
{
int rowIndex = 0;
if (ViewState["CurrentTable"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TextBox idno = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("txtIDNO");
TextBox names = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("txtNames");
DropDownList sex = (DropDownList)Gridview1.Rows[rowIndex].Cells[3].FindControl("dlstSex");
TextBox age = (TextBox)Gridview1.Rows[rowIndex].Cells[4].FindControl("txtAge");
DropDownList maritalstatus = (DropDownList)Gridview1.Rows[rowIndex].Cells[5].FindControl("dlstMaritalStatus");
DropDownList sector = (DropDownList)Gridview1.Rows[rowIndex].Cells[6].FindControl("dlstSector");
DropDownList attachment = (DropDownList)Gridview1.Rows[rowIndex].Cells[7].FindControl("dlstAttachment");
DropDownList contact = (DropDownList)Gridview1.Rows[rowIndex].Cells[8].FindControl("dlstContact");
//jQueryDatePicker contactdate = (jQueryDatePicker)Gridview1.Rows[rowIndex].Cells[9].FindControl("txtContactDate");
TextBox contactdate = (TextBox)Gridview1.Rows[rowIndex].Cells[9].FindControl("txtContactDate");
DropDownList session = (DropDownList)Gridview1.Rows[rowIndex].Cells[10].FindControl("dlstSession");
age.Attributes.Add("onkeypress", "var key; if(window.event){ key = event.keyCode;}else if(event.which){ key = event.which;} return (key == 45 || key == 13 || key == 8 || key == 9 || key == 189 || (key >= 48 && key <= 58) )");
contactdate.Attributes.Add("onkeypress", "");
idno.Text = dt.Rows[i]["IDNO"].ToString();
names.Text = dt.Rows[i]["Names"].ToString();
sex.Text = dt.Rows[i]["Sex"].ToString();
age.Text = dt.Rows[i]["Age"].ToString();
maritalstatus.Text = dt.Rows[i]["MaritalStatus"].ToString();
sector.Text = dt.Rows[i]["Sector"].ToString();
attachment.Text = dt.Rows[i]["Attachment"].ToString();
contact.Text = dt.Rows[i]["Contact"].ToString();
contactdate.Text = dt.Rows[i]["ContactDate"].ToString();
session.Text = dt.Rows[i]["Session"].ToString();
rowIndex++;
}
}
}
}
Пожалуйста, не меняйте сетку в этом посте просточтобы сфокусировать наше обсуждение, в противном случае функции, вызываемые событием click, имеют некоторый подробный код для столбцов, которые я исключил из таблицы.
Любая помощь будет высоко оценена.Даже если это не решение javascript.
Майкл