使用javascript获取gridview的选定行索引
我想从使用javascript获取gridview的选定行索引,javascript,c#,asp.net,gridview,Javascript,C#,Asp.net,Gridview,我想从gridview获取所选的rowindex。在gridview中有5列ID,name,model,code和amount。它还包含一个图像,单击该图像会打开一个弹出窗口,通过该窗口我可以在ID、name、model和code中分配值。问题是,在单击图像并在弹出窗口中选择行之后,我无法在每行中分配适当的值。 为此,我需要获取单击图像的所选索引 下面是gridview代码 <asp:GridView ID="grvSalesDetails" runat="server" AutoGene
gridview
获取所选的rowindex
。在gridview
中有5列ID
,name
,model
,code
和amount
。它还包含一个图像,单击该图像会打开一个弹出窗口,通过该窗口我可以在ID
、name
、model
和code
中分配值。问题是,在单击图像并在弹出窗口中选择行之后,我无法在每行中分配适当的值。
为此,我需要获取单击图像的所选索引
下面是gridview代码
<asp:GridView ID="grvSalesDetails" runat="server" AutoGenerateColumns="False" CellPadding="4"
CssClass="mGrid" ForeColor="#333333" GridLines="None" OnRowDeleting="grvSalesDetails_RowDeleting"
ShowFooter="True" Style="text-align: left" Width="100%" SelectedRowStyle="myselection">
<Columns>
<asp:BoundField DataField="RowNumber" HeaderText="SNo" />
<asp:TemplateField HeaderText="Machine ID">
<ItemTemplate>
<asp:TextBox ID="txtMID" runat="server" Width="30px"></asp:TextBox>
<img class="style1" alt="" src="../Inventory/Images/BrowseIcon.jpg" onclick="SelectMachineCode(this)"
id="imgMachine" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:TextBox ID="txtMName" runat="server" Width="120px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Model">
<ItemTemplate>
<asp:TextBox ID="txtMModel" runat="server" Width="80px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Code">
<ItemTemplate>
<asp:TextBox ID="txtMCode" runat="server" Width="70px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amount">
<ItemTemplate>
<asp:TextBox ID="txtMAmount" runat="server" Width="90px"></asp:TextBox>
</ItemTemplate>
<FooterStyle HorizontalAlign="Right" />
<FooterTemplate>
<asp:Button ID="AddNewRow" runat="server" CssClass="btnSearch" OnClick="AddNewRow_Click"
Text="Add New Row" />
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<FooterStyle BackColor="#102040" CssClass="mGrid" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
这就是javascript
<script type="text/javascript">
var popup;
function SelectMachineCode() {
var grvSalesDetails = document.getElementById('<%=grvSalesDetails.ClientID%>');
popup = window.open("machine_lookup.aspx", "Popup", "width=600,height=300");
popup.focus();
}
function OpenMachineLookUp() {
var _PageUrl = "machine_lookup.aspx";
OpenNewWindow(_PageUrl, "Machine Information", "800", "500");
}
function LookUpMachineValues(ID, Name, Model, Code, Usage, Description) {
var grvSalesDetails = document.getElementById('<%=grvSalesDetails.ClientID%>');
var rowId=;//selected rowindex here
var MID = grvSalesDetails.rows[rowId].cells[1].children[0];
MID.value = ID;
var MName = grvSalesDetails.rows[rowId].cells[2].children[0];
MName.value = Name;
var MModel = grvSalesDetails.rows[rowId].cells[3].children[0];
MModel.value = Model;
var MCode = grvSalesDetails.rows[rowId].cells[4].children[0];
MCode.value = Code;
}
var弹出窗口;
函数SelectMachineCode(){
var grvSalesDetails=document.getElementById(“”);
popup=window.open(“machine_lookup.aspx”,“popup”,“宽度=600,高度=300”);
popup.focus();
}
函数OpenMachineLookUp(){
var\u PageUrl=“machine\u lookup.aspx”;
OpenNewWindow(_PageUrl,“机器信息”,“800”,“500”);
}
函数LookUpMachineValues(ID、名称、型号、代码、用法、说明){
var grvSalesDetails=document.getElementById(“”);
var rowId=;//此处选择的行索引
var MID=grvSalesDetails.rows[rowId]。单元格[1]。子项[0];
MID.value=ID;
var MName=grvSalesDetails.rows[rowId]。单元格[2]。子项[0];
MName.value=名称;
var MModel=grvSalesDetails.rows[rowId]。单元格[3]。子项[0];
MModel.value=模型;
var MCode=grvSalesDetails.rows[rowId]。单元格[4]。子项[0];
MCode.value=代码;
}
我已尝试使用
hiddenfields
,parentnode
,childnode
,但无法获取所选的行索引 单击图像时,我找到了一种获取gridview
的rowindex
的方法
<ItemTemplate>
<asp:TextBox ID="txtMID" runat="server" Width="30px"></asp:TextBox>
<img class="style1" alt="" src="../Inventory/Images/BrowseIcon.jpg" onclick="SelectMachineCode(this)"
id="imgMachine" />
</ItemTemplate>
TFrost的解决方案可行,但结果不一致,这取决于是否显示寻呼机和/或页眉控件
假设显示了标题和寻呼机控件,然后单击第一个数据行。JavaScript将返回2(0是寻呼机行,1是页眉)
但是,如果您的数据集小于页面大小,或者根本没有寻呼机控件,该怎么办?在这种情况下,将不显示寻呼机控件,当您单击第一个数据行时,JavaScript将返回1
如果页面和标题都关闭,当您单击第一个数据行时,JavaScript将返回0
我最终使用的方法是在网格视图中将主键(即唯一整数)作为一个单独的列。然后将这个数字保存在JavaScript中的隐藏变量中。然后在codebehind中,通过GridView行进行迭代,并将此列的值和隐藏变量中存储的数字进行比较。找到匹配项后,这是您选择的行
<script type="text/javascript">
var popup;
function SelectMachineCode(row) {
var rowData = row.parentNode.parentNode;
var rowIndex = rowData.rowIndex;
document.getElementById("<%=hdValue.ClientID %>").value = rowIndex;
popup = window.open("/Machinery/lookup/machine_lookup.aspx", "Popup", "width=800");
popup.focus();
}
function LookUpMachineValues(ID, Name, Model, Code, Usage, Description) {
var grvSalesDetails = document.getElementById('<%=grvSalesDetails.ClientID%>');
var rowIndexs = document.getElementById("<%=hdValue.ClientID %>").value;
var ri = parseInt(rowIndexs);
var MID = grvSalesDetails.rows[ri].cells[1].children[0];
MID.value = ID;
var MName = grvSalesDetails.rows[ri].cells[2].children[0];
MName.value = Name;
var MModel = grvSalesDetails.rows[ri].cells[3].children[0];
MModel.value = Model;
var MCode = grvSalesDetails.rows[ri].cells[4].children[0];
MCode.value = Code;
}
</script>