버튼이있는 값에 따라 그리드에서 행을 삭제하십시오.
문제
ColumnStatus의 값에 따라 일부 행을 삭제해야합니다.나는 코드를 시도했지만 아무 일도 일어나지 않습니다.
은 값이 6 개의 행이 있고 (1,1,3,2,4,3), 상태 2,3 및 4로 행을 삭제하고 싶습니다. 2 개로 왼쪽, 행 1 및 행 2만이 있습니다..
ID Status
Row 1 1 1
Row 2 2 1
Row 3 3 3
Row 4 4 2
Row 5 5 4
Row 6 6 3
.
그리드 파넬
<ext:GridPanel ID="grid" runat="server" Title= “" AutoWidth="true" AutoHeight="true"
Padding="4" StripeRows="true" Draggable="false" Selectable="true" Icon="Application">
<Store>
<ext:Store ID="Store1" runat="server">
<Reader>
<ext:ArrayReader>
<Fields>
<ext:RecordField Name=" personID " Mapping="PersonsId"/>
<ext:RecordField Name="description" Mapping="Description " />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
</Store>
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column DataIndex="personID" Header="ID" Width="100">
</ext:Column>
<ext:Column ColumnID="columnStatus" DataIndex=" description " Header="Status" Width="130">
<Renderer Handler="return imgRenderer(value);" />
</ext:Column>
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="false"/>
</SelectionModel>
</ext:GridPanel>
.
삭제 버튼 :
<ext:Panel runat="server" ID="panel" Height="0">
<TopBar>
<ext:Toolbar runat="server">
<Items>
<ext:Button ID="btnClearSelection" runat="server" Text="Delete" OnDirectClick="btnClearSelection_Clicked" Icon="Delete">
<Listeners>
<Click Handler="Delete(#{grid});" />
</Listeners>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
</ext:Panel>
.
삭제 기능 :
function Delete(grid) {
alert("testing button clicked");
for (var i = 0; i < grid.store.totalLength; i++ ) {
var status = grid.store.getAt(i).data["columnStatus"];
if (status == "2"){
grid.getSelectionModel().selectRow(i ,true);
}
grid.deleteSelected();
}
}
.
문제와 관련된 경우 앰비넌 기능이 있습니다 :
function imgRenderer(value) {
if (value == "1") {
return value + " "
+ "<img src='/img/flag_green.png' id='1' class='Icon' />";
}
else if (value == "2") {
return value + " "
+ "<img src='/img/flag_red.png' id='2' class='Icon' />";
}
else if (value == "3") {
return value + " "
+ "<img src='/img/flag_orange.png' id='3' class='Icon'/>";
}
else if (value == "4") {
return value + " "
+ "<img src='/img/flag_green.png' id='4' class='Icon' />";
}
}
.
편집 : Firebug를 사용하여 실행하고 오류가 발생했습니다 : grid.store.getat (i)는 정의되지 않았습니다
해결책
function Delete(grid) {
var i = 0;
if (grid.store.getCount() > 0) {
for (i = grid.store.getCount() - 1; i >= 0; i--) {
var status = grid.store.getAt(i).data["description"];
if (status == "2" || status == "3" || status == "4") {
grid.store.removeAt(i);
}
}
}
}
다른 팁
Have you tried using the removeAt() method on the store?
function Delete(grid) {
alert("testing button clicked");
if (grid.store.count() > 0) {
for (var i = grid.store.count(); i >= 0; i--) {
var status = grid.store.getAt(i).data["columnStatus"];
if (status == "2"){
grid.store.removeAt(i);
}
}
}
}
제휴하지 않습니다 StackOverflow