GridView에 선택한 행에 대해서만 표시되어야하는 ImageButton이 있습니다. OnRowDataBound 이벤트에서이 작업을 수행하지만 작동하지 않습니다.RowDataBound가 예상대로 작동하지 않습니다.
protected void OnRowDataBoundMS(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
// some working code that handles the edit mode
}
else if (Gridview1.SelectedValue != null)
{
ImageButton ImgBut1 = e.Row.FindControl("ButtonUp") as ImageButton;
ImgBut1.Visible = true;
}
}
}
내있는 gridview는 다음과 같습니다
<asp:GridView runat="server"
ID="Gridview1"
DataSourceID="Milestones"
DataKeyNames="ID"
AutoGenerateColumns="false"
OnRowEditing="OnRowEditing"
OnRowDataBound="OnRowDataBoundMS"
OnSelectedIndexChanged="OnSelectedIndexChangedMS">
...
<asp:templatefield HeaderText="Order" ItemStyle-HorizontalAlign="center">
<ItemTemplate>
<asp:ImageButton ID="ButtonUp" runat="server" OnClick ="OrderUp" ImageUrl="img/up.png" Visible="false"/>
</ItemTemplate>
</asp:templatefield>
나는이의 마지막 3 시간 동안 나는 흥분하기 시작합니다. 이것에 대한 어떤 힌트?
이
if ((e.Row.RowState & DataControlRowState.Selected) != 0)
{
...
}
대안이있는하여 ImageButton의 Visible
속성을 설정하는 것입니다 : 마틴
'SelectedIndexChanged'에서 그것을하는 것이 내 대답보다 효율적입니다. 그러나 귀하의 답변에 대한 수정을 제안하고자합니다 (그러나 귀하의 승인없이 편집이 적용될 수 있습니다). – ConnorsFan
원본을보고 편집 할 수 있도록 편집이 버전으로되어 있으므로 –
선택한 색인보다 먼저 RowDataBound 발사에 대한 힌트를 주셔서 감사합니다. – Barnabeck