How to get values from GridView in jQuery Dialog i

2019-08-01 07:14发布

There is a jQuery Dialog with a GridView inside it in my aspx page. also have a button as Save on jQuery Dialog. I need to get values in GridView after click on this button in C#. I have tried as below. But not worked. I changed value in TextBox and click Save button. But it is not gave me edited value. nothing returned.

ASPX Page

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

  /* Java scripts and style sheets are here */

    <script type="text/javascript">

        function showDialog() {
            $('#dialogDiv').dialog('open');
        }

        $(document).ready(function () {
            $('#dialogDiv').dialog({
                autoOpen: false,
                resizable: true,
                width: 300,
                height: 'auto',
                buttons: {
                    "Save": function () {
                        $('#' + '<%= btnSaveType.ClientID %>').trigger("click");
                    }
                }
            });
        }); 

    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>
    <div id="dialogDiv" title="Type" style="overflow: hidden">
        <div id="TypeDiv" class="divTable">
            <div class="divRow">
                <div class="divColumn">
                    <div>
                        <asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="open" EventName="Click" />
                            </Triggers>
                            <ContentTemplate>
                                <asp:GridView ID="Type_GV" runat="server" ShowFooter="True" AutoGenerateColumns="False">
                                    <Columns>
                                        <asp:TemplateField HeaderText="Type">
                                            <ItemTemplate>
                                                <asp:TextBox ID="txtType" runat="server" Text='<%# Bind("Type") %>'></asp:TextBox>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                    </Columns>
                                </asp:GridView>
                            </ContentTemplate>
                        </asp:UpdatePanel>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <asp:Button ID="open" runat="server" Text="Open dialog" OnClick="open_Clicked" OnClientClick="showDialog()" />
    <br />
    <p>
        <asp:Button ID="btnSaveType" runat="server" OnClick="btnSaveType_Clicked" Style="visibility: hidden;
            display: none;" />
    </p>
</asp:Content>

Code Behind

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void open_Clicked(object sender, EventArgs e) 
    {
        VehicleType vTypeObject = new VehicleType();
        Type_GV.DataSource = vTypeObject.GetTypeList();
        Type_GV.DataBind();
    }

    protected void btnSaveType_Clicked(object sender, EventArgs e)
    {
        foreach (GridViewRow gvr in Type_GV.Rows)
        {
            TextBox type = (TextBox)gvr.FindControl("txtType");
            Debug.WriteLine("type : " + type.Text);
            // when debug, print as type : 
            // nothing print for type.Text
        }
    }
}

public class VehicleType
{
    public string Type { get; set; }

    public List<VehicleType> GetTypeList()
    {
        List<VehicleType> list = new List<VehicleType>()
    {
        new VehicleType{Type="Type1"}
    };
        return list;
    }
}

How can i solve this ?

0条回答
登录 后发表回答