私はこれを数日間理解しようとしてきたので、ここに行きます:
プログラムで複数の Web コントロールを for ループで作成するマスター カスタム コントロール (Web コントロール) があり、それぞれに jquery スライダーが含まれています。スライダーのdiv IDを変更する変数を含めて、コードビハインドからjavascript文字列を使用してスライダーを作成しようとしました。これにより、一意になり、他のスライダーと競合しなくなります。私が抱えている問題は、webcontrols が作成されても、最初の jquery スライダー (最初のコントロール内) のみが作成されることです。
そう:
主制御装置
protected void Page_Load(object sender, EventArgs e)
{
//create the custom web control with sliders in each
for (int a = 0; a < 9; a++)
{
CustomControl sliderControl = (CustomControl)LoadControl("CustomControl.ascx");
sliderControl.SliderID = a;
sliderControl.ID = "sliderControl_" + a;
sliderControl.ClientIDMode = System.Web.UI.ClientIDMode.Static;
thismaincontainerdiv.Controls.Add(sliderControl);
}
}
SliderControl - 最初はここでスライダーを作成していましたが、他のスライダー コントロール ID と競合する可能性があります。
<script>
$(function () {
$("#slider").slider({
value: 1,
min: 1,
max: 10,
step: 1,
slide: function (event, ui) {
$("#amount").val("$" + ui.value);
}
});
$("#amount").val("$" + $("#slider").slider("value"));
});
</script>
<div id="slidercontainer" runat="server" style="width:100%; height:87px; background-color:lightgray">
<div id="sliderdescription" runat="server" style="width:100%; height:60px;">
<div id="startblockdesc" runat="server" style="width:30px; height:100%; float:left"></div>
<div id="descdiv" runat="server" style="position:relative; top:25px">
<asp:Label ID="lbdescription" runat="server" style="width:100%; height:32px; font-size:20px; font-family:Helvetica" Text="Description" ></asp:Label>
</div>
</div>
<div id="sliderdiv" runat="server" style="width:100%; height:27px;">
<div id="startblockslider" runat="server" style="width:40px; height:100%; float:left"></div>
<div id="slider"></div>
</div>
次に、スライダーコントロールに上記を使用しないことで、これに進みます。Javascript を使用すると、スライダーに使用される div の ID を変更できます。
protected void Page_Load(object sender, EventArgs e)
{
string stringSliderID = "slider_" + this.SliderID;
string JavaScriptString = @"
var sliderID = <SliderID>;
var slider = document.getElementById('slider');
slider.id = 'slider_' + sliderID;
$(function () {
$('#slider_' + sliderID).slider({
value: 1,
min: 1,
max: 10,
step: 1,
slide: function (event, ui) {
$('#amount').val('$' + ui.value);
}
});
$('#amount').val('$' + $('#slider_' + sliderID).slider('value'));
});
";
System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "Slider", JavaScriptString.Replace("<SliderID>", this.SliderID.ToString()), true);
}
どんな助けでも大歓迎です。
これはより明確ですか?そのリンクを見ていきます。コメントありがとうございます。
ありがとう。