Добрый вечер всем.
У меня есть немного загадки для вас.
На моей странице есть каскадный ddl (ddlBuyer), поиск по текстовому полю (tbxProdAC) и список переключателей (radTopx). После их заполнения и нажатия кнопки отправки создается сетка с данными. Я пытаюсь добиться того, чтобы пользователь мог выбрать только ddl, текстовое поле или список радиокнопок в качестве метода для создания данных gridview.
Я достиг этого, написав немного синтаксиса jquery, который, по сути, «очищает» сетку и сбрасывает, например, различные методы поиска.
<code>
ddlBuyer.Attributes.Add("onclick",
"$('#tbxProdAC').val('');
$('#txtbxHowMany').val('');
$('#GridView1').remove();
$('#radTopx input').attr('checked',false);
$('#radProd').attr('checked', false);");
</code>
Однако, поскольку это происходит на стороне клиента, события на стороне сервера (то есть ddlBuyer_SelectedIndexChanged) все еще выполняются, и впоследствии данные привязываются, когда я на самом деле этого не хочу. то есть, если я выберу кнопку radtopx, нажмите кнопку, чтобы создать вид сетки (это происходит при обратной передаче).
</p>
<p>protected void btnSubmit_Click(object sender, EventArgs e)
{</p>
<pre><code> if (radTopx.SelectedValue == "" || txtbxHowMany.Text == "")
{
MessageBox.Show("Please Ensure that BOTH 'The Number of Products' and Appropriate material Is selected Before You Attempt To Run a TOP x Report", "Top x Error!!!",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
GridView1.DataSourceID = null;
}
else
{
int max = 0;
if (int.TryParse(txtbxHowMany.Text, out max))
{
GridView1.DataSource = this.GetMaterialData(Session["MemberKey"].ToString(), radTopx.SelectedItem.Value, "Primary", max);
GridView1.DataSourceID = String.Empty;
GridView1.DataBind();
}
}
Затем я нажимаю на ddlBuyer, информация radTopx очищается, но представление сетки сохраняется, так как запускается следующее:
</p>
<p>rotected void ddlBuyer_SelectedIndexChanged(object sender, EventArgs e)
{
ORDataClassesDataContext dbII = new ORDataClassesDataContext();
var queryII = (from r in dbII.tblOnlineReportingFINALPRODUCTs
where r.UnitUserfield1 == ddlBuyer.SelectedValue
select new { UnitUserfield2 = r.UnitUserfield2 }).Distinct().OrderBy(r => r.UnitUserfield2);</p>
<pre><code> ddlSub.DataSource = queryII;
ddlSub.DataTextField = "UnitUserfield2";
ddlSub.DataValueField = "UnitUserfield2";
ddlSub.DataBind();
ddlSub.Items.Insert(0, "--Choose Sub Category--");
GridView1.DataSourceID = null;
Есть ли способ «отсоединить» вид сетки через jquery, чтобы при нажатии ddlBuyer вид сетки высвобождал любые данные, которые он мог ранее хранить?
Извинения, если это не имеет смысла, это довольно сложно описать кратко и точно.