2
안녕하세요 저는 단 하나의 행과 5 개의 열이있는 테이블부터 시작합니다. 추가 행을 추가하기 위해 버튼과 백 코드를 추가했습니다. 첫 번째 행은 잘 보이지만 그 후 2 행에 머물러 있습니다. 페이지 디버깅이 시작됩니다. 나는 viewstate에서 읽었을 뿐이다. 나는 그것을 정확히 이해하지 못한다.테이블에 행을 추가하면 viewstate에 추가해야합니까?
편집
<asp:UpdatePanel ID="upTable" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnNewRow" EventName ="click" />
</Triggers>
<ContentTemplate>
<div>
<asp:Table ID="tblPrice" runat="server" GridLines="Both">
<asp:TableRow>
<asp:TableCell>QTY.</asp:TableCell>
<asp:TableCell>MATERIAL</asp:TableCell>
<asp:TableCell>COST</asp:TableCell>
<asp:TableCell>PRICE</asp:TableCell>
<asp:TableCell>TOTAL</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:TextBox ID="tbQty1" runat="server" Width="40" Text="0"></asp:TextBox>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="tbMaterial1" runat="server"></asp:TextBox>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="tbCost1" runat="server" OnTextChanged="PriceChange" AutoPostBack ="true" Text="0"></asp:TextBox>
<asp:MaskedEditExtender ID="meeCost1" runat="server" Mask="99,999,999.99" DisplayMoney="Left" TargetControlID="tbCost1" MaskType="Number">
</asp:MaskedEditExtender>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox ID="tbPrice1" runat="server" OnTextChanged="PriceChange" AutoPostBack="true" Text="0"></asp:TextBox>
<asp:MaskedEditExtender ID="meePrice1" runat="server" Mask="99,999,999.99" DisplayMoney="Left" TargetControlID="tbPrice1" MaskType="Number">
</asp:MaskedEditExtender>
</asp:TableCell>
<asp:TableCell>
<asp:Label ID="lblTotal1" runat="server" Text="$0.00"></asp:Label>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnNewRow" runat="server" Text="Add Row" />
당신은 ViewState에있는 테이블 개체를 저장할 수 없습니다
Protected Sub btnNewRow_Click(sender As Object, e As EventArgs) Handles btnNewRow.Click
Dim TRow As New TableRow()
Dim qtyCell As New TableCell()
Dim materialCell As New TableCell()
Dim costCell As New TableCell()
Dim priceCell As New TableCell()
Dim totalCell As New TableCell()
Dim qtyTB As New TextBox()
Dim materialTB As New TextBox()
Dim costTB As New TextBox()
Dim priceTB As New TextBox()
Dim costMEE As New AjaxControlToolkit.MaskedEditExtender
Dim priceMEE As New AjaxControlToolkit.MaskedEditExtender
Dim rowsCount As Integer = tblPrice.Rows.Count
Dim rowsString As String = rowsCount.ToString
qtyTB.Width = 40
'configure the masked edit extender controls
With costMEE
.ID = "meeCost" & rowsString
.Mask = "99,999,999.99"
.DisplayMoney = AjaxControlToolkit.MaskedEditShowSymbol.Left
.TargetControlID = "tbCost" & rowsString
.MaskType = AjaxControlToolkit.MaskedEditType.Number
End With
With priceMEE
.ID = "meePrice" & rowsString
.Mask = "99,999,999.99"
.DisplayMoney = AjaxControlToolkit.MaskedEditShowSymbol.Left
.TargetControlID = "tbPrice" & rowsString
.MaskType = AjaxControlToolkit.MaskedEditType.Number
End With
'Add masked edit extender to textboxes
costTB.Controls.Add(costMEE)
priceTB.Controls.Add(priceMEE)
'add id names to the textboxes
qtyTB.ID = "tbQty" & rowsString
materialTB.ID = "tbMaterial" & rowsString
costTB.ID = "tbCost" & rowsString
priceTB.ID = "tbPrice" & rowsString
'Add textbox to the table cells
qtyCell.Controls.Add(qtyTB)
materialCell.Controls.Add(materialTB)
costCell.Controls.Add(costTB)
priceCell.Controls.Add(priceTB)
'Add table cells to the table row
TRow.Cells.Add(qtyCell)
TRow.Cells.Add(materialCell)
TRow.Cells.Add(costCell)
TRow.Cells.Add(priceCell)
TRow.Cells.Add(totalCell)
'Add table row to the table
tblPrice.Rows.Add(TRow)
End Sub
당신이 시도 것을 우리에게 보여주십시오. 말로만 이해하기는 어렵습니다. –
정확히 내 viewstate 추가하는 시도하지 않았다 더 내 질문. 이것이 실제로 어떻게 이루어 졌는지 모르겠지만 현재 갖고있는 것에 대한 코드를 추가했습니다. 업데이트 패널의 표와 버튼을 클릭하면 다른 행이 추가됩니다. 페이지가 다시 게시되면 이전 행이 삭제되어 2 행 이상을 차지하지 않습니다. 그래서 내가 그것을 viewstate에 추가해야 할 것이라고 생각? – joetinger
GridView와 같은 웹 데이터 바인딩 된 컨트롤을 사용하면 훨씬 쉽게 할 수 있습니다. 그런 다음 ViewState를 조작하거나 컨트롤을 다시 만들 필요가 없습니다. 이러한 컨트롤은 모든 ASP.NET 웹 개발자가 먼저 배워야하는 컨트롤이어야합니다. 귀하의 질문에 대답 : 동적 컨트롤 및 ViewState 여기에 전체 샘플을 추가했습니다 : http://stackoverflow.com/questions/5266482/load-dynamic-control-from-a-dropdownlist-event-handler-howtoto -preserve-the-cont/5266670 # 5266670 –