В настоящее время я пытаюсь загрузить свой вид сетки в соответствии со значением в раскрывающемся списке и переключателем.
Однако всякий раз, когда я добавляю код для проверки наличия или отсутствия переключателя, gridview не загружает никаких данных.
Сначала я подумал, что причиной проблемы будет AutoPostBack, однако после решения проблемы с AutoPostBack я все еще не могу получить данные на основе переключателя. Каждый раз, когда я меняю значение раскрывающегося списка и меняю значение переключателя, данные не появляются.
В настоящее время я работаю на С#, и я использую свой вид сетки в качестве таблицы данных (плагин JQuery)
Вот мой пример кода
ASPX
<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Content/DataTables-1.10.12/media/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".gvv").prepend($("<thead></thead>").append($(".gvv").find("tr:first"))).dataTable();
$(document).on("dblclick", ".gvv tbody tr", function () {
var $this = $(this);
var row = $this.closest("tr");
row.find('td:eq(1)');
var courseCode = row.find('td:first').text();
});
})
function onPageLoad() {
$(".gvv").prepend($("<thead></thead>").append($(".gvv").find("tr:first"))).dataTable();
$(document).on("dblclick", ".gvv tbody tr", function () {
var $this = $(this);
var row = $this.closest("tr");
row.find('td:eq(1)');
var courseCode = row.find('td:first').text();
});
}
</script>
<div class="row">
<div class="col-lg-1">
</div>
<div class="form-group">
<asp:Label ID="lblESTt" CssClass="col-lg-2 control-label" runat="server" Text="Test display: "></asp:Label>
<div class="col-lg-3">
<asp:DropDownList ID="ddlTest" CssClass="form-control input-lg" runat="server" OnSelectedIndexChanged="ddlTest_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
</div>
</div>
</div>
<div class="row" style="margin-top: 4%;">
<div class="col-lg-5">
</div>
<div>
<div class="btn-group" data-toggle="buttons">
<asp:RadioButton ID="currentOption" runat="server" Text="Current" CssClass="btn btn-primary active btn-lg" />
<asp:RadioButton ID="pastOption" runat="server" Text="Past" CssClass="btn btn-primary btn-lg" />
</div>
</div>
</div>
<div class="row" style="margin-top: 2%;">
<div class="col-lg-1">
</div>
<div class="col-lg-10">
<asp:GridView ID="gridView1" runat="server" CssClass="table table-striped table-bordered dataTable no-footer hover gvv" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="testA" />
<asp:BoundField DataField="testB" />
<asp:BoundField DataField="testC" />
</Columns>
</asp:GridView>
</div>
</div>
ASPX.CS
protected void ddlTest_SelectedIndexChanged(object sender, EventArgs e)
{
if (currentOption.Checked)
{
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "onPageLoad();", true);
loadCurrentData();
}
else
{
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "onPageLoad();", true);
loadPastData();
}
}
protected void loadCurrentData()
{
gridView1.DataSource = retrieveBAL.retrieveCurrent(ddlTest.SelectedValue, DateTime.Now.Year);
gridView1.DataBind();
}
protected void loadPastData()
{
gridView1.DataSource = retrieveBAL.retrievePast(ddlTest.SelectedValue, DateTime.Now.Year);
gridView1.DataBind();
}
ОБНОВИТЬ
Я попытался создать событие oncheckedchange для своего переключателя, однако это событие просто не срабатывает. Вот что я пробовал
ASPX
<div class="btn-group" data-toggle="buttons">
<asp:RadioButton ID="currentOption" runat="server" Text="Current" Checked="true" CssClass="btn btn-primary active btn-lg" GroupName="currentPastOption" OnCheckedChanged="currentPastOption_CheckedChanged" AutoPostBack="true"/>
<asp:RadioButton ID="pastOption" runat="server" Text="Past" CssClass="btn btn-primary btn-lg" GroupName="currentPastOption" OnCheckedChanged="currentPastOption_CheckedChanged" AutoPostBack="true"/>
</div>
ASPX.CS
protected void currentPastOption_CheckedChanged(Object sender, EventArgs e)
{
if (currentOption.Checked)
{
loadCurrentData();
}
else if (pastOption.Checked)
{
loadPastData();
}
}