私の例では、テンプレート フィールドを持つ GridView があり、ドロップダウン メニューと TextBox が含まれています。JavaScriptのOnLoad
イベントは、TextBox の表示スタイルを に設定します"none"
。OnChange
GridView のイベントでDropDown のイベントを設定OnRowDataBound
し、TextBox の表示スタイルを必要なものに設定する JavaScript 関数を呼び出します。
私の例では、ドロップダウンで選択されたインデックスが の場合にのみ TextBox を表示します"1"
。
私はコードでこれをすべて行いました-これを参照してください: Gridview ID="GridView1"
:
<Columns>
<asp:TemplateField HeaderText="Order Status">
<ItemTemplate>
<asp:DropDownList ID="ddlOrderStatus" runat="server" Width="104px" ToolTip="Select order status">
</asp:DropDownList><br />
<asp:TextBox ID="txtShipTrackNo" runat="server"
Width="100px" Text='<%# Eval("sct_order_docket_id") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<script type="text/javascript">
var TargetBaseControl = null;
window.onload = function() {
try {
//get target base control.
TargetBaseControl = document.getElementById('<%= this.GridView1.ClientID %>');
for (var rowId = 1; rowId < TargetBaseControl.rows.length; ++rowId) {
var txtShip = TargetBaseControl.rows[rowId].cells[0].getElementsByTagName("input")[0];
txtShip.style.display = "none";
}
}
catch (err) {
TargetBaseControl = null;
}
}
function selectCheck(rowid)
{
TargetBaseControl = document.getElementById('<%= this.GridView1.ClientID %>');
var ddlStatus = TargetBaseControl.rows[rowid].cells[0].getElementsByTagName("select")[0];
var txtShip = TargetBaseControl.rows[rowid].cells[0].getElementsByTagName("input")[0];
txtShip.style.display = "none";
if (ddlStatus.selectedIndex == '1') {
txtShip.style.display = "block";
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlStatus = (DropDownList)e.Row.FindControl("ddlOrderStatus");
string strFunc = string.Format("return selectCheck('{0}')", e.Row.RowIndex + 1);
ddlStatus.Attributes.Add("onchange", strFunc);
}
}