<tbody> <tr> <td class="cellWidth300 bottomBorder topBorder">Column1</td> "> <tbody> <tr> <td class="cellWidth300 bottomBorder topBorder">Column1</td> "> <tbody> <tr> <td class="cellWidth300 bottomBorder topBorder">Column1</td> " />

पोस्टबैक पर गतिशील सामग्री को संरक्षित करना

मेरे पास एक सारणी है जो डिफ़ॉल्ट रूप से ऐसा दिखाई देती है:

<table width="650" id="myTable" runat="server">
    <tbody>
        <tr>
            <td class="cellWidth300 bottomBorder topBorder">Column1</td>
            <td class="cellWidth125 leftBorder topBorder bottomBorder textCenter">Column2</td>
            <td class="cellWidth100 leftBorder topBorder bottomBorder textCenter">Column3</td>
            <td class="cellWidth125 leftBorder rightBorder topBorder bottomBorder textRight">Column4</td>
        </tr>
        <tr>
            <td class="cellWidth300"><input type="text" size="29" runat="server"/></td>
            <td class="cellWidth125 leftBorder textCenter"><input type="text" size="9" class="units commas" runat="server"/></td>
            <td class="cellWidth100 leftBorder textCenter"><input type="text" size="8" class="value commas" runat="server"/></td>
            <td class="cellWidth125 leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server"/> </td>
        </tr>
        <tr>
            <td class="cellWidth300"><input id="Text2" type="text" size="29" runat="server"/></td>
            <td class="cellWidth125 leftBorder textCenter"><inputtype="text" size="9" class="units commas" runat="server"/></td>
            <td class="cellWidth100 leftBorder textCenter"><input  type="text" size="8" class="value commas" runat="server"/></td>
            <td class="cellWidth125 leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server"/> </td>
        </tr>
        <tr>
            <td class="cellWidth300"><input  type="text" size="29" runat="server"/></td>
            <td class="cellWidth125 leftBorder textCenter"><input type="text" size="9" class="units commas" runat="server"/></td>
            <td class="cellWidth100 leftBorder textCenter"><input type="text" size="8" class="value commas" runat="server"/></td>
            <td class="cellWidth125 leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server" /> </td>
        </tr>
    </tbody>
</table>

मेरे पास jQuery का एक हिस्सा है जो हर बार जब आप अंतिम पंक्ति में कुछ टाइप करते हैं तो एक नई पंक्ति उत्पन्न करता है। ऐसा लगता है:

var _addRow ='<tr>' +
'<td width="300"><input type="text" size="29" runat="server" ></td>' +
'<td width="125" class="leftBorder textCenter"><input type="text" size="9" class="units commas" runat="server" /></td>' +
'<td width="100" class="leftBorder textCenter"><input type="text" size="8" class="value commas" runat="server" /></td>' +
'<td width="125" class="leftBorder rightBorder textRight"><input type="text" size="11" readonly="readonly" tabindex="-1" class="totalA1 autoTotal" runat="server" /> </td>' +
'</tr>';

function initialize() {
$(document).on('keypress', '#myTable tr:last input', AddRowToMyTable);
}

function AddRowToMyTable() {
$('#myTable tr:last').after(_addRow);
}

यह सब सिर्फ महान महान काम करता है।

अब, मैंने कुछ चीजें की हैं जिन्हें पोस्टबैक की आवश्यकता है। उनमें से एक है मैं एक्सएमएल में तालिका में डेटा को सहेजता हूं और दूसरा मैं तालिका में डेटा से पीडीएफ बना सकता हूं। हर बार जब मैं पोस्टबैक करता हूं, तो डेटा को वहां पहुंचने से पहले यह सभी गतिशील रूप से जेनरेट किए गए डेटा को खो देता है। यही कहना है, अगर मैं सभी डेटा के साथ एक एक्सएमएल फ़ाइल लिखता हूं, तो तीसरी पंक्ति (पिछली पंक्ति जो गतिशील रूप से जेनरेट नहीं होती है) से भी कुछ भी दिखाई नहीं देती है।

अजीब चीज यह है कि एक समय था जब मैं यह सब काम कर रहा था। उस समय, मैंने सोचा कि मैंने डेटा को सेव किया है और मेरी टेबल वापस पाने के लिए तुरंत इसे पुनः लोड किया है, लेकिन यह अब और काम नहीं कर रहा है और मुझे यकीन नहीं है कि क्यों।

मेरा पहला बड़ा सवाल यह है: यदि मैं सर्वर पर पोस्टबैक करता हूं, तो गतिशील पंक्तियों में सभी डेटा भी नहीं भेजा जाना चाहिए? यही कहना है, अगर मेरे पास 6 वें पंक्ति में डेटा है, भले ही पोस्टबैक पूरा हो जाए तो यह खो जाएगा, फिर भी इसे मिटाए जाने से पहले सर्वर पर नहीं भेजा जाना चाहिए? मेरा बचत एल्गोरिदम ऐसा दिखता है:

private void WriteMyTableToXML()
{
    HtmlInputText tContent;
    HtmlTableRow tRow;

    int i = 1; //First row is headers, which we don't want.

    _Writer.WriteStartElement("MyTable");

    while (i < tblCropsAndFeed.Rows.Count - 1)//last row should always be blank.  We can skip it
    {
        tRow = tblCropsAndFeed.Rows[i];

        _Writer.WriteStartElement("Entry");

        string tInputBox0 = tRow.Cells[0].Controls[0].ClientID;
        tContent = (HtmlInputText)tRow.FindControl(tInputBox0);
        _Writer.WriteStartElement("name");
        _Writer.WriteString(tContent.Value);
        _Writer.WriteEndElement();

        string tInputBox1 = tRow.Cells[1].Controls[0].ClientID;
        tContent = (HtmlInputText)tRow.FindControl(tInputBox1);
        _Writer.WriteStartElement("units");
        _Writer.WriteString(tContent.Value);
        _Writer.WriteEndElement();

        string tInputBox2 = tRow.Cells[2].Controls[0].ClientID;
        tContent = (HtmlInputText)tRow.FindControl(tInputBox2);
        _Writer.WriteStartElement("value");
        _Writer.WriteString(tContent.Value);
        _Writer.WriteEndElement();

        _Writer.WriteEndElement();

        i++;
    }

    _Writer.WriteEndElement();
}

दूसरा, वास्तव में पृष्ठ की स्थिति को वास्तव में संरक्षित करने के लिए कुछ है। ऐसा कुछ नहीं है?

If(IsPostBack)
    {
    DontResetThePage();
    }
0
यह सिर्फ बाध्यकारी के साथ सादा एचटीएमएल और .NET नियंत्रण है
जोड़ा लेखक mkautzm, स्रोत
कार्यक्रम आपको इसे नाम देने की अनुमति देता है, इसलिए यह एक नया विकल्प बनाने या मौजूदा एक को ओवरराइट करने का एक उपयोगकर्ता विकल्प है।
जोड़ा लेखक mkautzm, स्रोत
मैं नहीं कह सकता कि मेरे पास है। समस्या यह है कि यह लगभग एक तालिका है, 20. यह एक बड़ा रूप है, इसलिए बड़े बदलाव करना एक अपॉप्शन हो सकता है :(।
जोड़ा लेखक mkautzm, स्रोत
क्या आप कोई प्रारंभिक डेटा लोड करते हैं या यह बाध्यकारी के साथ केवल सादा एचटीएमएल और .NET नियंत्रण है?
जोड़ा लेखक Bobby5193, स्रोत
क्या आप हर बार एक ही एक्सएमएल फ़ाइल में लिखते हैं? जैसा कि आप ओवरराइटिंग रखते हैं, या डेटा जोड़ते हैं?
जोड़ा लेखक Bobby5193, स्रोत
क्या आपने पहले ग्रिडव्यू नियंत्रण का उपयोग किया है? कोड-पीछे में बाध्यकारी के साथ?
जोड़ा लेखक Bobby5193, स्रोत
जोड़ा लेखक Bobby5193, स्रोत

1 उत्तर

तो मेरा मानना ​​है कि यहां सबसे अच्छा विकल्प एक सर्वर पक्ष बाध्यकारी के साथ एक एएसपी ग्रिड व्यू का उपयोग करना होगा। जब आप ग्रिडव्यू में पंक्तियों को संपादित या जोड़ते हैं तो इसे स्वचालित रूप से बनाई गई xml फ़ाइल से आपके द्वारा फ़ीड किए गए डेटा का उपयोग करके पोस्टबैक पर स्वचालित रूप से पुनर्निर्मित किया जाएगा।

1
जोड़ा